2012-04-13 28 views
0

Vielleicht ist es einfach zu spät für mich, aber ich versuche, ein Zeichen zwischen 2 String mit Regex in PHP zu ersetzen.Ersetzen Zeichen zwischen Strings

Beispiel string:

other | text [tag]text|more text|and more[/tag] end | text 

Mein Ziel ist es | mit <br/> zwischen [tag] und [/tag] zu ersetzen.

mit diesem Versuchte, so scheint es allerdings nicht so einfach war:

/<td>(\|)<td>/gsi 

ein wenig gesucht, konnte aber nicht eine Antwort mit dem Zeug machen I gefunden.

Hoffe, dass Sie helfen können, dank

+0

Es ist schwer zu verstehen, was Sie tun möchten. Möchten Sie jedes Vorkommen des Zeichens _ | _, das zwischen zwei Vorkommen eines gegebenen HTML-Tags auftritt, ersetzen? Und wenn ja, gibt es garantiert nur zwei Vorkommen des Tags (oder könnte es 3, 4, etc ... sein)? – jahroy

+0

@Jahroy wenn ich das richtig gelesen habe, ja es ist – trembon

Antwort

3

Zuerst finden, was [tag] s drin ist, dann die Rohre zu finden. PHP 5.3:

$result = preg_replace_callback('/\[tag\](.+?)\[\/tag\]/i', function($match) { 
    return str_replace('|', '<br />', $match[1]); 
}, $str); 
+0

+1 für 'preg_replace_callback' – Robbie

+0

danke, fand den Rest selbst obwohl, geändert $ match [1] zu $ ​​match [0] wie ich das [tag] behalten möchte ist es – trembon