|
|
|
| допустим, есть строка
020200200 <value="0fdx"> 34505344
|
как мне заменить все 0 на 'ноль', только чтоб регулярка не трогала <value="0fdx">
чтоб получилось:
ноль2ноль2нольноль2нольноль <value="0fdx"> 345ноль5344
|
| |
|
|
|
|
|
|
|
для: а-я
(16.09.2009 в 03:25)
| | Тэги встречаются только вида <value="0fdx">? других не будет? | |
|
|
|
|
|
|
|
для: cheops
(16.09.2009 в 12:35)
| | другие тэги есть, но мне только в этом НЕ надо заменять. | |
|
|
|
|
|
|
|
для: а-я
(16.09.2009 в 13:41)
| | Т.е. везде, кроме этого тэга? | |
|
|
|
|
|
|
|
для: cheops
(16.09.2009 в 13:48)
| | да... именно так. | |
|
|
|
|
|
|
|
для: а-я
(16.09.2009 в 03:25)
| | Можно попробовать следующее регулярное выражение
<?php
$text = '020200200 <value="0fdx"> 34505344';
$pattern = "|(?<!\<value=\")([\d\w]*?)(0)([\d\w]*?)(?!\")|is";
$text = preg_replace($pattern, "\\1ноль\\3", $text);
echo htmlspecialchars($text);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(16.09.2009 в 15:09)
| | спасибо =) вроде работает без проблем.
а если строка будет вида
$
<postfield name="type" value="$(type1615)"/>
$
|
т.е. нельзя трогать в тэги postfield в значении value? | |
|
|
|
|
|
|
|
для: а-я
(16.09.2009 в 15:34)
| | Тогда регулярное выражение нужно будет немного модифицировать
<?php
$text = '020200200 <value="0fdx"> 34505344';
$pattern = "|(?<!\<value=\")([\d\w\$\(]*?)(0)([\d\w\)]*?)(?!\")|is";
$text = preg_replace($pattern, "\\1ноль\\3", $text);
echo htmlspecialchars($text);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(16.09.2009 в 15:37)
| | что-то понять не могу...
данный момент реализовал таким образом:
<?
$text = '$4567$ <postfield name="type" value="$(type1615)"/> $sdfgs';
$text = str_replace('$', '$$', $text);
$pattern = '|<postfield name="(.*?)" value="\$\$(.*?)"/>|uis';
$text = preg_replace($pattern, '<postfield name="\\1" value="$\\2"/>', $text);
echo htmlspecialchars($text);
?>
|
только в данном случаи меняем $ на $$, все работает, но можно как то упростить.
как в 1ом случаи? | |
|
|
|
|
|
|
|
для: а-я
(16.09.2009 в 15:48)
| | Не понятно. У вас символы доллара удваиваются без всякой выгоды
$$4567$$ <postfield name="type" value="$(type1615)"/> $$sdfgs
|
Это то что вы хотели получить? | |
|
|
|
|
|
|
|
для: cheops
(16.09.2009 в 15:58)
| | да! =) именно это мне и надо! | |
|
|
|
|
|
|
|
для: а-я
(16.09.2009 в 17:01)
| | никто не знает? | |
|
|
|
|
|
|
|
для: а-я
(17.09.2009 в 02:42)
| | >ноль2ноль2нольноль2нольноль <value="0fdx"> 345ноль5344
>$$4567$$ <postfield name="type" value="$(type1615)"/> $$sdfgs
>да! =) именно это мне и надо!
>никто не знает?
На самом деле немного сложно понять, что вам требуется. Это один вопрос или два? | |
|
|
|
|
|
|
|
для: cheops
(17.09.2009 в 10:27)
| | >>ноль2ноль2нольноль2нольноль <value="0fdx"> 345ноль5344
>>$$4567$$ <postfield name="type" value="$(type1615)"/> $$sdfgs
>>да! =) именно это мне и надо!
>>никто не знает?
>На самом деле немного сложно понять, что вам требуется. Это один вопрос или два?
да, извините. это уже другой вопрос, но по теме.
надо из
$4567$ <postfield name="type" value="$(type1615)"/> $sdfgs
|
сделать
$$4567$$ <postfield name="type" value="$(type1615)"/> $$sdfgs
|
просто необходимо использовать wml-разметку.. знаю, что она уже устарела, но так надо.
в этой разметке можно использовать переменные, $var -> $$var - чтоб получить текст, а не переменную.
решил использовать буфер, и перед отдачей заменить все $ на $$,
кроме тех что в тэге <postfield> | |
|
|
|
|
|
|
|
для: а-я
(17.09.2009 в 18:03)
| | Можно поступить следующим образом
<?php
$text = '$4567$ <postfield name="type" value="$(type1615)"/> $sdfgs';
$pattern = '|(?<!value=")\$|is';
$text = preg_replace($pattern, "\$\$", $text);
echo htmlspecialchars($text);
?>
|
PS Под новые вопросы все-таки лучше заводить новые темы. | |
|
|
|
|
|
|
|
для: cheops
(18.09.2009 в 08:15)
| | Благодарю! Это то что надо!! =)
>PS Под новые вопросы все-таки лучше заводить новые темы.
хорошо.. учту =) | |
|
|
|