Помогите с регуляркой

Ivan826

надо в php сделать следующее:
заменить в строке все вхождения вида |text| на <text>
Как это сделать?

artimon

Объясни ещё раз чего ты хочешь.
http://php.rinet.ru/manual/ru/reference.pcre.pattern.syntax.php

Ivan826

в строке есть некие фразы выделенные символами | в начале и в конце. Надо эти символы заменить на < в начале и > в конце

artimon

$s = preg_replace('/\|(.+?)\|/','<\1>',$s)

psihodog

\|([^]*)\|/\<$1\>
прогонять до посинения

psihodog

а... если там вложенности нет, то убрать greedy, и достаточно одной таблэтки.

Ivan826

не работает

Ivan826

ЧТо значит "если там вложенности нет, то убрать greedy"?

artimon

Fixed

psihodog

ну короче, то что написал там вопросительный знак -- это оно и есть.
значит, что как только найдёт текст удовлетворяющий выражению, сразу его "применит", а не будет искать текста подлиннее.

artimon

Я уже потихоньку телепатом заделываюсь.

psihodog

во-во...

psihodog

но всё-таки лучше не точку, а [^], а то не будет работать на фразах, которые через строчку перескакивают.

artimon

Тогда уж лучше
$s = preg_replace('/\|(.+?)\|/s','<\1>',$s) 

admsec2008

 $s = preg_replace('/\|(.+?)\|/s','<\1>',$s)  
может лучше
 $s = preg_replace('/\|(.*?)\|/s','<\1>',$s)  

текст может же быть и пустым?
Оставить комментарий
Имя или ник:
Комментарий: