Побег захваченного выражения с помощью PHP preg_replace - PullRequest
2 голосов
/ 08 июля 2011

Я борюсь с preg_replace и очень надеюсь, что кто-то может заметить мою ошибку.Регулярные выражения кажутся моей ахиллесовой пятой.

Я пытаюсь заменить строки типа {{123.jpg}} на <img src="http://mydomain/some/path/123.jpg"></img>

Я искал похожие вопросы и нашел preg_quote, но я неЯ не думаю, что у меня есть какие-либо символы регулярного выражения в не-регулярной части моей замещающей строки, поэтому я в растерянности.

Вот что я пытаюсь:

function replace($article_id,$text){
    $pattern = '/\{\{(.*?)\}\}/';
    $replacement = '<img src="'.URL_CONSTANT.'articles/'.$article_id.'/'.'${1}'.'"></img>';
    return preg_replace($pattern, $replacement, $text);
}

Я могуубедитесь, что шаблон соответствует, но он не заменяет должным образом.Я думаю, что проблема может относиться к финальному / перед заменой ${1}, но я не понимаю, почему, поскольку я не верю, что это специальный символ регулярного выражения.

Любая помощь приветствуется!

РЕДАКТИРОВАТЬ: я обнаружил, что проблема не связана с моим выражением лица.Спасибо всем, кто помогал проверить, что мое выражение лица было правильно сформировано!

1 Ответ

1 голос
/ 15 июля 2011

Спасибо всем, кто помог!Я обнаружил, что проблема не в регулярном выражении, а в плагине автозамены scayt для CKEditor.Он превращал ярлыки {{124.jpg}} в промежутки, потому что обнаруживал их как слова с ошибками.Я написал другое регулярное выражение, которое удалило эти промежутки и заменило их на оригинальный формат {{abc.def}}.Похоже, это решило проблему.

...