2012-04-13 2 views
0

Может быть, мне слишком поздно делать это, но я пытаюсь заменить символ между 2 строками регулярным выражением в PHP.Заменить символ между строками

Пример строки:

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

Моя цель состоит в том, чтобы заменить | с <br/> между [tag] и [/tag].

Пробовал с этим, кажется, это было не так легко, хотя:

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

Искал немного, но не мог разобрать ответ с вещей, которые я нашел.

Надеется, что вы можете помочь, спасибо

+0

Трудно понять, что вы хотите сделать. Вы хотите заменить каждое появление символа _ | _, которое происходит между двумя вхождениями данного тега html? И если да, гарантируются ли только два появления тега (или могут быть 3, 4 и т. Д.)? – jahroy

+0

@jahroy, если я прочитал это правильно, да, это – trembon

ответ

3

Во-первыхов, найти то, что внутри [tag] s, затем найти трубы. PHP 5.3:

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

+1 для 'preg_replace_callback' – Robbie

+0

спасибо, узнал остальное сам, хотя, изменил $ match [1] на $ match [0], поскольку я хочу сохранить [tag] «s – trembon

Смежные вопросы