ich möchte html Text ersetzen, die von TagHilfe mit preg_replace
start_ticker Code .... end_ticker
i Erfolg nicht
mein Code
$string_html = preg_replace('/<!-- start_ticker -->.*<!-- end_ticker -->/i',"bla bla",$string_html);
geschlossen
ich möchte html Text ersetzen, die von TagHilfe mit preg_replace
start_ticker Code .... end_ticker
i Erfolg nicht
mein Code
$string_html = preg_replace('/<!-- start_ticker -->.*<!-- end_ticker -->/i',"bla bla",$string_html);
geschlossen
Standardmäßig "." stimmt nicht mit Zeilenvorschüben überein - Sie können den Modifikator "s" (DOTALL) hinzufügen, um dies zu ändern. Ich vermute, das ist dein Problem.
$string_html = preg_replace('/<!-- start_ticker -->.*<!-- end_ticker -->/is',"bla bla",$string_html);
Ich denke, Sie möchten die Start/End-Tags behalten. Dann müssen Sie sie mit Klammern erfassen:
$string_html = preg_replace('/(<!-- start_ticker -->).*(<!-- end_ticker -->)/i', '$1bla bla$2', $string_html);
Beachten Sie jedoch, dass reguläre Ausdrücke sind nicht die beste Wahl, wenn es um HTML kommt.
get leere Zeichenfolge –
Das ist nicht möglich. Es sollte zumindest blabla enthalten – soulmerge
Sie benötigen:
$match1 = '<!-- start_ticker -->';
$match2 = '<!-- end_ticker -->';
$replace = 'bla bla';
$string = preg_replace("/$match1(.*?)$match2/is", $match1.$replace.$match2, $string);
Beachten Sie, dass ein großer Unterschied macht, da sie das Spiel ungreedy macht (*.?). Dies ist, wenn das Muster auf die größte Anzahl von möglichen Permutationen dieses Musters abgestimmt wird, und nicht auf das kleinste.
http://www.troubleshooters.com/codecorn/littperl/perlreg.htm#Greedy
Andernfalls würden Sie von der ersten bis zur letzten clobbering irgendetwas dazwischen passen, wenn es mehrere Übereinstimmungen.
können Sie dieses Problem lösen, auch ohne reguläre Ausdrücke zu verwenden:
$start = '<!-- start_ticker -->';
$end = '<!-- end_ticker -->';
$replacement = 'blabla';
$posStart = stripos($str, $start);
if ($posStart !== false) {
$posEnd = stripos($str, $end, $posStart);
if ($posEnd !== false) {
$str = substr($str, 0, $posStart) . $replacement . substr($str, $posEnd + strlen($end));
}
}
Ich empfehle dies. Es sollte schneller sein als die PCREs. – bucabay
/in ersetzen mir alles und ich bekomme leeren String –
ich einen Tippfehler das erste Mal gemacht - sein sollte/ist – Greg
Wenn Sie don Ich möchte die Kommentare nicht ersetzen, dann kombiniere das mit der Antwort von @soulmerge – Greg