#php #regex
#php #регулярное выражение
Вопрос:
Моя строка здесь:
<li>super strona <em>{cena:100 zł netto}</em></li><li>foo strona <em>{cena:101 zł netto}</em></li></ul></p><h3>Strona super {cena:101 zł netto}</h3>
.. и я хочу изменить его с помощью регулярного выражения на это:
<li>super strona <em>100 zł netto</em></li><li>foo strona <em>101 zł netto</em></li></ul></p><h3>Strona super 101 zł netto</h3>
Я пытаюсь сделать это так:
поиск: {cena:(.*?)}
заменить: 1
но он не работает должным образом. Вот эффект:
<li>super strona <em>100 zł netto}</em></li><li>foo strona <em>{cena:101 zł netto</em></li></ul></p><h3>Strona super 101 zł netto</h3>
Для замены текста я использую функцию ereg_replace() PHP.
У вас есть какие-либо идеи по этому поводу?
Комментарии:
1. В качестве общего совета используйте preg вместо ereg .
Ответ №1:
Попробуйте это так:
$text = preg_replace('#{cena:([^}]*)}#', '\1', $text);
Вам нужно экранировать {
и }
поскольку они являются частью кванторов в регулярном выражении. Я бы также посоветовал не использовать ereg*
функции, поскольку они оказались чрезвычайно медленными.
Ответ №2:
{cena:[^}]*}
попробуйте заменить на регулярное выражение выше, посмотрите, поможет ли это.