Moin allerseits,
leider habe ich ein Problem, bei dem ich nicht mehr weiter weiß.
Es handelt sich um preg_replace und Reguläre Ausdrücke, die als Beispiel wie folgt aussehen können:
PHP-Code:
<?php
$string = "
[div#example]tada[div#test]asd[/div]tede[/div]";
$replace = "<div id=\"\\2\">\\3</div>";
$pattern = "~(\[div#([A-Za-z]+)\](.*)\[/div\])~im";
echo preg_replace($pattern,$replace,$string);
$pattern = "~(\[div#(.*)\](.*)\[/div\])~Uim";
echo "\n\n".preg_replace($pattern,$replace,$string);
$pattern = "~(\[div#([A-Za-z0-9]+)\](.*)\[/div\])~im";
echo "\n\n".preg_replace($pattern,$replace,$string);
?>
Das Beispiel oben gibt folgendes zurück:
HTML-Code:
<div id="example">tada[div#test]asd[/div]tede</div>
<div id="example">tada[div#test]asd</div>tede[/div]
<div id="example">tada[div#test]asd[/div]tede</div>
Wie man bemerkt, bewirkt U (ungierig), dass das erste
für den Ausdruck passt und verwendet wird. Wenn das ganze nur case-insensitive (i) und auf mehrere Zeilen (m) verwendet wird, wird der letzte schließende Tag genutzt.
Problem bei der Sache ist, dass mit diesem Ausdruck nicht
Code:
[div#test]...[/div]
ersetzt wird, weil eben
auf den Rest zutrifft. Andererseits, wenn ich die einzelnen Zeichen erlaube (Beispiel3) funzt das auch nicht.
Ich bräuchte wahrscheinlich (Vermutung) eine Nicht-Erlaubnis via ^ - leider habe ich keinen Plan, wie ich das in diesem Beispiel anwenden kann.
Hat jemand von euch eine Idee?
Freundliche Grüße,
Unsk1ll3d