php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 04-07-2005, 15:05
Master0Blicker
 Registrierter Benutzer
Links : Onlinestatus : Master0Blicker ist offline
Registriert seit: Jun 2005
Beiträge: 358
Master0Blicker ist zur Zeit noch ein unbeschriebenes Blatt
Standard Problem mit preg_match()->a-z und bestimmte UNICODE-Zeichen

Hallo, ich gebe zu ich habe Reguläre Ausdrücke nicht wirklich verstanden. Ich habe es mehrere male durchgelesen und die wirklich einfachen Beispiele verstanden (PLZ überprüfen)!

Nun habe ich mir das Pattern hier zusammengebastelt:

$pattern = "/^([a-z]+)?$/i";


Es soll mir ein Textfeld überprüfen ob da auch wirklich nur Buchstaben vorkommen.

Ich benötige aber noch 2 Sachen dazu:

1. Ob das Feld leer ist (darf nicht sein)

und

2. 5 Sonderzeichen (UNICODE) dürfen vorhanden sein (š đ č ć ž)


Ich weis hier wird geholfen es zu verstehen und keine Lösungen präsentiert.
Ich hoffe dennoch dass jemand hier mitleid mit mir hat.....entweder erklären das ich es auch wirklich verstehe oder eben das Pattern zu liefern welches die zusätzlichen Zeichen berücksichtigt!

Ich danke euch schonmal im vorraus!
Mit Zitat antworten
  #2 (permalink)  
Alt 04-07-2005, 15:32
derHund
 PHP Master
Links : Onlinestatus : derHund ist offline
Registriert seit: Aug 2003
Ort: Hundehütte
Beiträge: 5.293
derHund ist zur Zeit noch ein unbeschriebenes Blatt
Standard Re: Problem mit preg_match()->a-z und bestimmte UNICODE-Zeichen

Zitat:
1. Ob das Feld leer ist (darf nicht sein)
das gibt dein pattern doch schon an.
Zitat:
2. 5 Sonderzeichen (UNICODE) dürfen vorhanden sein (š đ č ć ž)
entweder gibst du jedes zeichen an, welches vorkommen darf (eventuell mit modifier u), oder du schließt die zeichen aus, die nicht vorkommen dürfen. beides nicht gerade elegant.
__________________
Die Zeit hat ihre Kinder längst gefressen
Mit Zitat antworten
  #3 (permalink)  
Alt 04-07-2005, 16:05
Master0Blicker
 Registrierter Benutzer
Links : Onlinestatus : Master0Blicker ist offline
Registriert seit: Jun 2005
Beiträge: 358
Master0Blicker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Blos wie gebe ich diese Zeichen an die Vorkommen dürfen mit diesem Modifier /u ??

Hänge ich gan ans Ende einfach ein /u an mit diesen UNICODE-Zeichen nach der Eckigen Klammer ?


Wenn ich das so mache:

$pattern = "/^([a-z]ccžšd+)?$/iu";

Dann kommt das:

Warning: preg_match() [function.preg-match]: Compilation failed: invalid UTF-8 string at offset 9 in
Mit Zitat antworten
  #4 (permalink)  
Alt 04-07-2005, 19:08
Master0Blicker
 Registrierter Benutzer
Links : Onlinestatus : Master0Blicker ist offline
Registriert seit: Jun 2005
Beiträge: 358
Master0Blicker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ereg und UNICODE vertragen sich demnach nicht, oder ?

Weis keiner Rat ? Ich bin am verzweifeln.....
Mit Zitat antworten
  #5 (permalink)  
Alt 04-07-2005, 19:22
derHund
 PHP Master
Links : Onlinestatus : derHund ist offline
Registriert seit: Aug 2003
Ort: Hundehütte
Beiträge: 5.293
derHund ist zur Zeit noch ein unbeschriebenes Blatt
Standard

bei mir funktionierts, auch ohne u ... zeig mal deinen code.

du solltest die zeichen außerdem in die zeichenklasse hineinschreiben.
__________________
Die Zeit hat ihre Kinder längst gefressen
Mit Zitat antworten
  #6 (permalink)  
Alt 04-07-2005, 20:40
Master0Blicker
 Registrierter Benutzer
Links : Onlinestatus : Master0Blicker ist offline
Registriert seit: Jun 2005
Beiträge: 358
Master0Blicker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Der Code ist folgender:

$pattern = "/^([a-z]žš+)?$/iu";


Da fehlt noch ein đ,ć,č, der kann mein UE32 irgenwie nicht....

Aber mach ich dann in in einem anderen Editor, das ist kein Problem, das Problem ist wie gesagt das ich diese fehlermeldung bekomme...
Mit Zitat antworten
  #7 (permalink)  
Alt 04-07-2005, 21:35
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von Master0Blicker
Da fehlt noch ein đ,ć,č, der kann mein UE32 irgenwie nicht....

Aber mach ich dann in in einem anderen Editor, das ist kein Problem, das Problem ist wie gesagt das ich diese fehlermeldung bekomme...
die fehlermeldung bekommst du, weil PHP noch nicht wirklich unicode-kompatibel ist.

macht aber nichts, da sich UTF-8 ja auch komplett als ASCII darstellen lässt.

gebe dein pattern noch mal so, wie's oben war -
$pattern = "/^([a-z]ccžšd+)?$/iu";
- in UE ein, und dann wählst du über datei -> konvertieren "Unicode/ASCII/UTF8 nach UTF8 (ASCII-Bearbeitung)" aus.

dann kommt da
PHP-Code:
$pattern "/^([a-z]ccžšd+)?$/iu"
heraus, und damit speicherst du das script mal ab.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #8 (permalink)  
Alt 04-07-2005, 23:46
Master0Blicker
 Registrierter Benutzer
Links : Onlinestatus : Master0Blicker ist offline
Registriert seit: Jun 2005
Beiträge: 358
Master0Blicker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Also, ich habe nun folgendes:

$pattern = "/^([a-z]d»zÄTćA»A¶Ä‘+)?$/iu";

Und dennoch bekomme ich diese Fehlermeldung:

Warning: preg_match() [function.preg-match]: Compilation failed: invalid UTF-8 string at offset 8 in


Ich habe das so gemacht gehabt wie du es sagtest @wahsaga.

Jedoch will mein UE ja auch diese Zeichen nicht akzeptieren: ć č đ und bringt mir stattdessen komische Zeichen. Diese aber hier reinkopiert sind plötzlich wieder meine richtigen Zeichen.
Also kann sie UE nur nicht anzeigen, den Code hat es aber richtig....

Und danach habe ich folgendes Probiert da du ja sagtest das PHP nicht wirklich Unicode-Kompatibel ist und da ich es ja jetzt sowieso in ASCII gewandelt habe:

$pattern = "/^([a-z]d»zÄTćA»A¶Ä‘+)?$/i";

also habe ich das /u weggelassen. Zumindest bekomme ich keine Fehlermeldung mehr. Jedoch wird jetzt jedesmal ein False zurückgeliefert von dieser Funktion.......


Hier nochmal mein Code:

Code:
 
$text = "abcčdsćrešdsđsdžds"; 
	$pattern = "/^([a-z]d»zÄTćA»A¶Ä‘+)?$/i";
	if(preg_match ($pattern,$text))...
Mit Zitat antworten
  #9 (permalink)  
Alt 05-07-2005, 10:05
chansel0049
 Member
Links : Onlinestatus : chansel0049 ist offline
Registriert seit: Apr 2004
Beiträge: 294
chansel0049 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

nun wenn ich das Pattern richtig lese
PHP-Code:
$pattern "/^([a-z]ccžšd+)?$/iu"
wird dabei nach Zeilen/Eingaben gesucht die :

- als erstes Zeichen einen Buchstaben von A-Z
- danach die Zeichenkette ccžš
- danach ein oder mehr d

- und die drei vorigen Punkte keinmal oder einmal vorkommen

und ich bezweifel, dass du das willst, sondern eher etwas wie
PHP-Code:
$pattern "/^([a-zccžšd]){1,}$/iu"
womit nach scheinbar tschechischen Wörtern gesucht wird (keine Leerzeichen erlaubt sind)

UTF-8 / Unicode hin oder her

__________________
chansel0049
----------------------------------------------------
if you've reached the bottomline - dig further!
Übersetzer gesucht? http://www.babelport.com

Geändert von chansel0049 (05-07-2005 um 10:10 Uhr)
Mit Zitat antworten
  #10 (permalink)  
Alt 05-07-2005, 10:26
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von Master0Blicker
Hier nochmal mein Code:
Code:
 
$text = "abcčdsćrešdsđsdžds"; 
	$pattern = "/^([a-z]d»zÄTćA»A¶Ä‘+)?$/i";
	if(preg_match ($pattern,$text))...
der passt ja nun auch nicht wirklich zu deinem pattern ...

wenn du die zeichen im regex als ASCII schreibst - dann solltest du das wohl auch im zu durchsuchenden text machen.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #11 (permalink)  
Alt 05-07-2005, 14:09
Master0Blicker
 Registrierter Benutzer
Links : Onlinestatus : Master0Blicker ist offline
Registriert seit: Jun 2005
Beiträge: 358
Master0Blicker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@Chansel

Dieses Pattern bring auch eine Fehlermedung (Warning: preg_match() [function.preg-match]: Compilation failed: invalid UTF-8 string at offset 8 in D:\Apache\Apache2\htdocs\insertfunc.inc on line 43
)

$pattern = "/^([a-zccžšd]){1,}$/iu";

Er will einfach meine UNICODE-Zeichen nicht.....(ahja, es handelt sich um kroatische bzw. serbokroatische Zeichen nur so mal nebenbei erwähnt)


@wahsaga

Ja, aber du hast ja gesagt das ich mein Pattern nach ASCII-umwandeln lassen soll im UE und dies dann als Pattern verwenden soll....oder habe ich das mal wieder was nicht verstanden gehabt ?

Oder ist das schon so richtig nur das ich mein Text vor der Prüfung auch irgendwie 'umwandeln' sollte ? Falls ja, wie ? Ich habe da irgendwo UTF-decoding oder sowas ähnliches gesehen, meinst du das ?
Mit Zitat antworten
  #12 (permalink)  
Alt 05-07-2005, 14:12
chansel0049
 Member
Links : Onlinestatus : chansel0049 ist offline
Registriert seit: Apr 2004
Beiträge: 294
chansel0049 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Nun was das UTF-8/Unicode Problem angeht rate ich, den vorgeschlagenen Konvertierungsansatz zu gehen ..


Ich wollte nur darauf hinweisen, dass dein Pattern mit absoluter Wahrscheinlichkeit ( ) falsch ist

Allerdings könnten Backslash auch hilfreich sein, löst bei mir so manche Probleme ...

a-z\ä\ö\ß
...
__________________
chansel0049
----------------------------------------------------
if you've reached the bottomline - dig further!
Übersetzer gesucht? http://www.babelport.com
Mit Zitat antworten
  #13 (permalink)  
Alt 05-07-2005, 15:10
Master0Blicker
 Registrierter Benutzer
Links : Onlinestatus : Master0Blicker ist offline
Registriert seit: Jun 2005
Beiträge: 358
Master0Blicker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Wie bereits erwähnt bringt mir das

Code:
 
$pattern = "/^([a-zd»zÄTćA»A¶Ä‘+])?$/i";
return(preg_match ($pattern,$text));
immer false zurück, egal ob der Text nun richtig oder falsch ist in....

Ich habe ja von @wahsaga diesen Ansatz bekommen und befolgt.
Aber irgendwas stimmt da noch nicht....

Ich 'hänge' an diesem Problem nun seid 2 Tagen......und in Google finde ich auch nichts brauchbares, entweder abstrakte 'Her-Um-Weiterleitungen oder eben gar nichts zu diesem Thema...scheint nicht besonders populär zu sein....
Mit Zitat antworten
  #14 (permalink)  
Alt 05-07-2005, 16:28
Master0Blicker
 Registrierter Benutzer
Links : Onlinestatus : Master0Blicker ist offline
Registriert seit: Jun 2005
Beiträge: 358
Master0Blicker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Also, ich habe nun meinen zu durchsuchenden Text mit utf8_decode bzw. utf8_encode 'bearbeitet....gleiches Ergebnis.
Die Funktion preg_match liefert immer false zurück, egal ob ich richtige oder falsche Inahlte habe!

Code:
                $pattern = "/^([a-zd»zÄTćA»A¶Ä‘+])?$/i";
	$text = utf8_decode($text);
	return(preg_match ($pattern,$text));
bzw.

Code:
                $pattern = "/^([a-zd»zÄTćA»A¶Ä‘+])?$/i";
	$text = utf8_encode($text);
	return(preg_match ($pattern,$text));
So langsam überlege ich mir das so zu machen das ich auf die Überprüfung verzichte und einfach noch ein Text hinzuschreibe das es äusserst wichtig sei das der Inhalt stimmen muss....
Was anderes fällt mir dazu nicht mehr ein...
Mit Zitat antworten
  #15 (permalink)  
Alt 05-07-2005, 20:37
Master0Blicker
 Registrierter Benutzer
Links : Onlinestatus : Master0Blicker ist offline
Registriert seit: Jun 2005
Beiträge: 358
Master0Blicker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Kann mir denn keiner Helfen bzw. sagen wo ich dazu hilfe finde ??
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

Plates native PHP template system

Plates ist ein natives PHP-Vorlagensystem, das schnell, einfach zu verwenden und einfach zu erweitern ist.

24.05.2019 Berni | Kategorie: PHP/ Framework
Maqetta Open Source  HTML5-Editor ansehen Maqetta Open Source HTML5-Editor

Einen WYSIWYG-Editor zur visuellen Erstellung von Userinterfaces in HTML5 (Drag-and-Drop)

13.05.2019 Berni | Kategorie: HTML5/ EDITOR
NodeBB

NodeBB ist eine Foren-Software auf NodeJS-Basis

13.05.2019 Berni | Kategorie: PHP/ Forum PHP Software
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 06:50 Uhr.