| 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! Post your PHP questions here! |
 |

21-01-2004, 13:46
|
|
error
Newbie
|
|
Registriert seit: Jan 2004
Beiträge: 6
|
|
[REGEX] Bedingungen?
Moin,
mal wieder ein Problem mit Regular Expressions:
Und zwar brauche ich eine Art if-Abfrage innerhalb der Expression. Das Ganze soll so aussehen:
Text(, |:)(.*?)(§§§)
Der Ausdruck soll entweder bei "Text, blabla:" oder bei "Text: blabla" matchen. Jetzt gibt es dabei aber ein Problem: An der Stelle, an der bei mir §§§ steht, soll stehen: "Wenn bei $1 ein ', ' gematcht wurde muss hier ein ':' sein, ansonsten nicht". Lässt sich das irgendwie machen?
|

21-01-2004, 14:12
|
Wurzel
Master  
|
|
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
|
|
Code:
$text = 'soll entweder bei "Text, blabla:" oder bei "Text: blabla" matchen. Jetzt ';
echo preg_replace("!Text(, |: )blabla!Ue",'str_replace(",",":","\\0")',$text);
so ?
__________________
-
|

21-01-2004, 14:17
|
|
error
Newbie
|
|
Registriert seit: Jan 2004
Beiträge: 6
|
|
Wenn ich deinen Code richtig verstehe ersetzt du einfach alle ":" durch "," bei der Ausgabe. Die Ausgabe soll aber unverfälscht sein, ich will nur, dass die Expression sowohl bei "bla, sfasf, dsad:", als auch bei "blasfasfdsad:" matcht.
|

21-01-2004, 14:26
|
Wurzel
Master  
|
|
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
|
|
ob du ein str_replace oder eine andere (php)funktion an der stelle aufrufst ist schnuppe .... du kannst dir auch eine eigene funktion zur bearbeitung schreiben ... sie sollte allerdings irgendwas zurückgeben, mit dem preg_replace was anfangen kann ... und nein, ^^ es ersetzt "," durch ":"
__________________
-
|

21-01-2004, 14:29
|
|
error
Newbie
|
|
Registriert seit: Jan 2004
Beiträge: 6
|
|
Irgendwie ist mir das noch nicht so ganz klar, kann ich dich mal über ICQ o.ä. sprechen?
|

21-01-2004, 14:39
|
Wurzel
Master  
|
|
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
|
|
was ist denn daran unklar?
Code:
$text = 'soll entweder bei "Text, ,blabla:" oder bei "Text: blabla" matchen. Jetzt ';
function show($x)
{
if(strlen($x) >= 13)
{
return $x . " MATCH";
}
else
{
return $x;
}
}
echo preg_replace("!Text(, |, ,|: )blabla!Ue",'show("\\0")',$text);
probiers mal aus.
was mir unklar ist, ist die "merkwürdig unterschiedliche" zusammensetzung
deines textes.
btw: 1:1 support machen wir hier nicht
__________________
-
|

21-01-2004, 14:49
|
|
error
Newbie
|
|
Registriert seit: Jan 2004
Beiträge: 6
|
|
Strlen?
Das mit "Text" und "blabla" ist natürlich nur ein Beispiel, es kann genauso gut "fjasofhopashfpoiashfpiashfl, asjfhsapfha, sfhaspoihfpashf;mjfpas: Hallo, wie geht's denn so?" lauten.
Sorry, wenn ich etwas schwer von Begriff bin.
"btw: 1:1 support machen wir hier nicht "
> Schade.
|

21-01-2004, 14:59
|
Wurzel
Master  
|
|
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
|
|
das mit strlen ist ja auch nur ein beispiel ...  die funktion könnte ja auch zu etwas anderem dienen ... wenn du das prinzip verstanden hast, solltest du das jetzt auf deinen speziellen fall anwenden können. wenns nicht klappt, kannst du ja deine regex posten ... dann schaun mer mal.
__________________
-
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| 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.
HTML-Code ist aus.
|
|
|
|
PHP News
|