ereg_replace ... ich kriegs nicht hin
RuD
- php
0 lulu0 Dieter Raber0 Felix Riesterer
Hallo,
ich wende mich wiedermal vertrauensvoll an die SelfHTML-Gemeinde, da mir hier schon oft kompetent und schnell geholfen wurde:
Ich hab glaube ich ein generelle Problem mit den Such-/Ersetzungszeichenketten bei z.B. ereg_replace.
So weit ich verstande habe kann man mit ereg_replace einen String nicht nach einem Substring, sondern nach einem Stringmuster durchsuchen und dieses ersetzen. Ich habe nen String (vielmehr Text), in dem ist alles moegliche drin, z.B. Zahlen, Sonderzeichen, ... Ich moechte nun nur noch Text (a-z,A-Z) und Zahlen, die min. 10 Stellen haben. Alles andere soll rausfliegen.
Koennte mir jemand evtl. ne allgemeine Hilfe zu den Such-/Ersetzungszeichenketten geben und wie man die 'aufbaut'? ich raffs einfach nicht.
Danke
Huhu Rud,
Koennte mir jemand evtl. ne allgemeine Hilfe zu den Such-/Ersetzungszeichenketten geben und wie man die 'aufbaut'? ich raffs einfach nicht.
Hier zwei Seiten die das gut erklären ...
http://pcre.nophia.de/intro/index.php
http://gnosis.cx/publish/programming/regular_expressions.html
Viele Grüße
lulu
Hallo RuD,
An Hilfswerkzeugen fuer regulaere Ausdruecke kenne ich folgende Programme bzw. Seiten:
Anstatt ereg_xx waerest Du mit preg_xx besser bedient, dazu ein Zitat aus dem PHP-Manual:
Die Funktion preg_replace(), die eine zu Perl kompatible Syntax regulärer Ausdrücke verwendet, ist häufig die schnellere Alternative zu ereg_replace().
Grundsaetzlich finde ich regulaere Ausdruecke recht unkompliziert, wenn ich natuerliche Sprache in Regex-Syntax uebersetze, zur Verdeutlichung einmal einen (einfachen und sehr unvollstaendigen) Ausdruck ueber eine URL:
http://www.example.com
ist der Ausdruck 'http://'[1], gefolgt von einer Anzahl an Buchstaben oder Zahlen [2], gefolgt von einem Punkt[3], gefolgt von einer Anzahl an Buchstaben oder Zahlen[4], gefolgt von einem Punkt[5], gefolgt von einer Anzahl an Buchstaben oder Zahlen[6].
Als RegEx sieht das z. B. so aus:
[1] http://
[2] [a-zA-Z0-9]+ oder aber \w+, das Plus fuer 'einmal oder mehrmals'
[3] . , der Backslash, damit der Punkt ein Punkt ist und nicht 'beliebiges Zeichen'
[4] siehe [2]
[5] siehe [3]
[6] siehe [2]
Das ergibt den Ausdruck http://[a-zA-Z0-9]+.[a-zA-Z0-9]+.[a-zA-Z0-9]+
Nochmal, der Ausdruck ist so nicht fuers wahre Leben zu gebrauchen, sondern soll nur exemplarisch aufzeigen, wie man von natuerlicher Sprache nach RegEx uebersetzt.
Gruß,
Dieter
Liebe(r) RuD,
auch von mir ein Linktipp zum Selberlernen: http://www.regular-expressions.info
Liebe Grüße aus Ellwangen,
Felix Riesterer.