Denjs
Новичок
регулярные выражения - анализ и замена тегов
Пытаюсь анализировать "типа" - теги (объясню позже) и заменять отдельные из них на "пусто" с помощью регулярных выражений.
В общем есть собственоручные теги вида
пытаюсь определить его как
но данное выражение сбивается при нескольких подряд идущих тегах. (см пример).
Подозреваю что вместо "(.*)"
надо сказать что-то типа "любая последовательность символов не содержащая (\\2) "
Как мне это сказать?
пример кода который показывает в чем проблема и что я хочу :
В общем выдается так :
-----------------------------------------
Original string : 11<user ivanov>22</user ivanov>33 erus<user ivanov>44</user ivanov>55
Changed string : 11-55
-----------------------------------------
а хочестя так :
Changed string : 11-33 erus-55
Пытаюсь анализировать "типа" - теги (объясню позже) и заменять отдельные из них на "пусто" с помощью регулярных выражений.
В общем есть собственоручные теги вида
PHP:
<user ivanov> </user ivanov>
PHP:
"/(<(user ivanov)[^>]*>)(.*)(<\/\\2>)/"
Подозреваю что вместо "(.*)"
надо сказать что-то типа "любая последовательность символов не содержащая (\\2) "
Как мне это сказать?
пример кода который показывает в чем проблема и что я хочу :
PHP:
$html='11<user ivanov>22</user ivanov>33 erus<user ivanov>44</user ivanov>55';
$req="/(<(user ivanov)[^>]*>)(.*)(<\/\\2>)/";
$changeto="-";
$html2=preg_replace ($req,$changeto,$html);
echo "Original string : <b>".htmlspecialchars($html)."</b><br>";
echo "Changed string : <b>".htmlspecialchars($html2)."</b><br>";
-----------------------------------------
Original string : 11<user ivanov>22</user ivanov>33 erus<user ivanov>44</user ivanov>55
Changed string : 11-55
-----------------------------------------
а хочестя так :
Changed string : 11-33 erus-55