PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : eregi_replace ; :: richtig Escapen -.-'



dadie
14.05.2005, 19:19
Hallo ,

Ich habe ein Problem in einem Kleinen Script udnzwar weiss ich nicht wie ich die :: Richtig Escape -.-'

Hier ien beispiel code :



$Y = "Test::[X]::" ;
$Y = eregi_replace ("::[X]::", "A", $Y) ;
echo $Y ;


Das ergebniss währe "Test::[X]::"

bei



$Y = "Test::[X]::" ;
$Y = eregi_replace ("X", "A", $Y) ;
echo $Y ;


währe das Ergebniss "Test::[A]::"

Also liegt es woll an den :: nur wie Escape ich sie ? Wie beim . klappt es nett mit "\./"
wie escapt man die ":" ?

Mfg Dadie

Jesus_666
14.05.2005, 20:47
Also liegt es woll an den :: nur wie Escape ich sie ? Wie beim . klappt es nett mit "\./"
wie escapt man die ":" ?

Mfg Dadie
Genauso wie man alles andere auch escapt, indem man einen Backslash davorsetzt: "\:"
Wo du "\./" her hast ist mir schleierhaft; das ist Unsinn.

Dein Fehler ist, daß du die eckigen Klammern nicht escapts. Folgender Code funktioniert wunderbar:

$Y = "Test::[X]::";
$Y = eregi_replace ("\:\:\[X\]\:\:", "A", $Y);
echo $Y;

dadie
14.05.2005, 21:20
big thx dachte die [] muss ich nicht escapen aber eine sache kann ich mir nicht erklähren :

wenn cih folgenden code habe


$Y = "Test::[X]::TEST::[X]::";
$Y = eregi_replace ("\:\:\[(.*)\]\:\:", "A", $Y);
echo $Y;

Gibt er "TestA" aus weil er diese klamme siht Test::[X]::TEST::[X]::

kann man php helfen zu unterscheiden bzw. schritt für schritt zu arbeiten ?

Jesus_666
14.05.2005, 21:41
Ich arbeite immer mit den preg*-Funktionen; die sind nur wenig langsamer als ereg* und bieten komplette Perl-kompatible Regexps. Das Beispiel mit PCRE:
// Ein Match, dem ein ? folgt, ist faul - er matcht so wenig Text wie möglich
$Y = "Test::[X]::TEST::[X]::";
$Y = preg_replace ("/\:\:\[(.*?)\]\:\:/i", "A", $Y);
echo $Y;

// Alternative: Der Modifikator U macht alle Matches faul
$Y = "Test::[X]::TEST::[X]::";
$Y = preg_replace ("/\:\:\[(.*)\]\:\:/iU", "A", $Y);
echo $Y;