preg_replace с проблемой URL - PullRequest
       30

preg_replace с проблемой URL

0 голосов
/ 28 марта 2011

Я использую preg_replace для автоматической вставки HTML-ссылок в абзацы.

Вот что я сейчас использую:

$pattern = "~(?!(?:[^<\[]+[>\]]|[^>\]]+<\/a>))(".preg_quote($find_keyword, '/').")\b~msUi";
$replacement = "<a href=\"http://$kw_url\" title=\"$find_keyword\">\$0</a>"; 
$article_content = preg_replace($pattern, $replacement, stripslashes($article_content), 1, $added );

Отлично работает, кроме 1 проблемы:

Если ключевое слово является URL-адресом, оно не совпадает и не заменяется.

Если: $find_keyword="http://www.mysite.com/" совпадений не будет, даже если оно в содержании.

Я уже пытался экранировать $ find_keyword с помощью preg_quote, что ничего не изменило.

Любой эксперт по регулярным выражениям знает решение?Спасибо.

Ответы [ 2 ]

1 голос
/ 29 марта 2011

Прямые косые черты в ваших $ find_keywords не экранированы, что нарушает шаблон.

0 голосов
/ 29 марта 2011

Вы можете запустить ваше find_keyword через

$find_keyword=preg_quote("http://www.mysite.com/", '/');

http://www.php.net/manual/en/function.preg-quote.php

...