[ЗАКРЫТО] [PHP, preg_replace] Ошибка "неожиданный символ"

kruzer25

Ошибка вида:
Warning: Unexpected character in input: '' (ASCII=3) state=2 in c:\program files\apache group\Apache\htdocs\shop\parser.lib.php(81) : regexp code on line 7
В чём именно заключается ошибка, в кривом pattern, в кривом replacement, в кривом subject?
Пытался гуглем найти - нашёл только гору сайтов, на которых - такая же ошибка...

Ivan8209

ASCII 3 = ^C
---
...Я работаю антинаучным аферистом...

kruzer25

Я в курсе.
У меня chr(3) (вместе с chr(0 chr(1 chr(2 активно используется как спецсимвол.
Всё работает, пока в тексте внутри одного конкретного блока не вставить где-нибудь символ $ - тогда появляется вот такая ошибка.
Отлаживать всё полностью, и пытаться понять, где что изменилось в связи с появлением этого символа - жутко влом (хотя и понятно, что, скорее всего, это связано с одним из callback'ов поэтому хочу хотя бы для начала узнать, из-за чего именно возникает ошибка.
Или, может быть, кто-нибудь знает, на какую строку можно заменить $, чтобы доллар по прежнему был бы виден в браузерах, но не являлся символом $?

kruzer25

Кстати, при
preg_replace("/pattern/e","'\\1'",$str)
на место подставится вхождение первых и при этом будет ' заменено на \', а " - на \" (то есть, если второй аргумент preg_replace - "'\\1'", мы увидим, что все двойные кавычки заэкранировались, а если '"\\1"' - что все одинарные например, знак $ заэкранирован не будет (из-за чего у меня и возникала та ошибка).
Можно ли рассчитывать, что экранируются только ' и ", и что они экранируются всегда?
Если нет - от чего это зависит?
Оставить комментарий
Имя или ник:
Комментарий: