Ich habe folgende Regex:
/\{\s?joomla-tag\s+(.*<+.+>+.*)\s?\}/is
und den folgenden Code:
$regex = "/\{\s?joomla-tag\s+(.*<+.+>+.*)\s?\}/is";
$replace = '<div class="someclass">$1</div>';
$text = preg_replace( $regex, $replace, $text );
Aber leider kann er nicht mit dem folgenden Code übereinstimmen (obwohl er das sollte):
.... many html lines .......
<p>123{joomla-tag Lore<strong>m</strong> ip</p>
<p>sum dolor sit amet}</p>
.... many html lines .......
Sehen Sie sich das echte Beispiel an: http://pastebin.com/WSQyrmxd
Was ist falsch: ein regulärer Ausdruck oder etwas anderes? Könnten Sie mir bitte die richtige Variante empfehlen? In RegExr funktioniert alles reibungslos, aber nicht in PHP.
Auf einem lokalen Server, erhalte ich einfach NULL nach preg_replace
EDIT: Endlich habe ich eine Lösung gefunden: (Danke, sg3s für eine Idee) http://www.pelagodesign.com/blog/2008/01/25/wtf-preg_replace-returns-null/
1 Stimmen
Muss der reguläre Ausdruck sein.
0 Stimmen
Ich glaube nicht, dass Sie die
\{
0 Stimmen
Sie sind notwendig, ich muss mit {joomla-tag ..... }
0 Stimmen
Ich habe einfach kopiert und eingefügt, und es hat funktioniert.
0 Stimmen
Nein, für mich ist das nicht der Fall. Was könnte der Grund dafür sein?
0 Stimmen
Es funktioniert hier einwandfrei codepad.org/h1lIkhqF
0 Stimmen
Ich verstehe. Könnten viele andere html-Tags, die dies umgeben, der Grund dafür sein, dass dies in der realen App nicht funktioniert?
0 Stimmen
Was funktioniert nicht so, wie Sie es erwarten würden?
0 Stimmen
Keine Mathearbeiten - überhaupt kein Ersatz
0 Stimmen
Können Sie ein echtes Textbeispiel vorlegen, das keine Übereinstimmungen/Ersetzungen ergibt?
0 Stimmen
pastebin.com/WSQyrmxd Zeile 200
1 Stimmen
Ich könnte anmerken, dass diese Art von Regex auf diese große eine Zeichenfolge ist sehr ressourcenintensiv; mein Test app für diese Regex buchstäblich sagte, es war nicht sehr glücklich mit ihm.