m-modifier in Regulaerem Ausdruck
Thomas
- php
Hallo,
ich moechte jeweils ''text'' durch <i>text</i> ersetzen. Nun habe ich folgenden Code.
<?php
$text = "''Dies ist
kursiv''";
$text = preg_replace("/''(.*?)''/m","<i>$1</i>",$text);
echo $text;
?>
Mein Problem ist, dass obwohl ich den m-Modifier benutze, die Ersetzung auf Grund des Zeilenumbruchs nicht stattfindet. Ohne Zeilenumbruch funkioniert es.
Wo liegt das Problem?
Php ist version 4.4.3.
Danke,
Thomas
Tach.
Mein Problem ist, dass obwohl ich den m-Modifier benutze, die Ersetzung auf Grund des Zeilenumbruchs nicht stattfindet. Ohne Zeilenumbruch funkioniert es.
Wo liegt das Problem?
Deiner Beschreibung nach meinst du nicht multi- sondern single line, d. h. den Modifier /s.
Hallo,
beim selben Script ist mir noch ein weiteres Problem untergekommen, so werde ich das einfach hier unterbringen:
<?php
$text = "http://www.beispiel.de<br>";
$text = preg_replace("/(http://[^|]*?)( )|(http://[^|]*?)(<)/i","<a href="$1">$1</a>$2",$text);
echo $text;
?>
Dies gibt <a href=""></a>br> aus, das heisst irgendwo gehen die eingeklammerten Variablen verloren. Wenn ich $3 und $4 benutze funktioniert die zweite Haelfte, da ich aber eine Alternative angegeben habe sollte doch eigentlich beides funktionieren, oder? Wenn ich jeweils die Verschiedenen Nummern benutzen muss, brauche ich aber eine if-Anweisung...
Was ist hier die beste Loesung?
Gruss,
Thomas
hi,
$text = preg_replace("/(http://[^|]*?)( )|(http://[^|]*?)(<)/i","<a href="$1">$1</a>$2",$text);
Dies gibt <a href=""></a>br> aus, das heisst irgendwo gehen die eingeklammerten Variablen verloren. Wenn ich $3 und $4 benutze funktioniert die zweite Haelfte, da ich aber eine Alternative angegeben habe sollte doch eigentlich beides funktionieren, oder?
Vielleicht eher
$text = preg_replace("/(http:\/\/[^|]*?)( |<.*>)/i","<a href=\"$1\">$1</a>$2",$text);
gruß,
wahsaga