Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Тексты > Помогите с заменой текста


Автор: romanыч 8.12.2008, 11:17
Добрые люди, нужна ваша помощь.
в тексте $story нужно заменить все вхождения
Код
[attachment=id=name]
 на 
Код
$link1 + name + $link2

где id - это $row['id'] (берется из бд)
Эдесь я думаю ничего сложного нет. Я просто c php никогда дела не имел. Если не тяжело, помогите плз.

Автор: Валерия 8.12.2008, 18:25
echo preg_replace("#\[attachment=(.*?)=(.*?)\]#i", "$link1 + \\2 + $link2", "[attachment=1=test] [attachment=2=asdf]");

Автор: romanыч 8.12.2008, 19:01
Цитата(Валерия @  8.12.2008,  18:25 Найти цитируемый пост)
echo preg_replace("#\[attachment=(.*?)=(.*?)\]#i", "$link1 + \\2 + $link2", "[attachment=1=test] [attachment=2=asdf]");

Спасибо огромное, как раз то что нужно.

Автор: romanыч 8.12.2008, 19:24
Забыл, а как "$row['id']" то вставить в рег выражение вместо "(.*?)"

Добавлено через 13 минут и 23 секунды
Сделал так:
Код

echo preg_replace("#\[attachment=" .$row['id']. "=(.*?)\]#i", "$link1 + \\2 + $link2", "[attachment=1=test] [attachment=2=asdf]");

Вроде работает, но хотел бы узнать, правильно ли это? ни каких косяков там не будет?

Автор: Валерия 8.12.2008, 19:56
Правильно)

Автор: teroni 9.12.2008, 00:11
Лучше вставлять с помощью preg_quote($row['id']) . Тогда точно не будет проблем. А в Вашем варианте проблемы могут возникнуть в том случае, если в $row['id'] есть спецсимволы регулярок (. \ + * ? [ ^ ] $ ( ) { } = ! < > | : )

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)