PHP BBCode и ссылки - PullRequest
       17

PHP BBCode и ссылки

0 голосов
/ 12 февраля 2012

OK. Поэтому я создаю функцию, которая будет анализировать bb-кодированную строку в html. Структура ссылки BBCode выглядит так:

[url=http://somelink.com/]Link[/url]

И я хочу сделать это:

<a href="http://somelink.com/">Link</a>

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

/(http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/

А теперь я попытался preg_match_all совпадения $ str и foreach, чтобы проверить, действителен ли его URL, а затем проанализировать его в html, но, похоже, я не могу этого сделать. Есть предложения?

Ответы [ 2 ]

0 голосов
/ 12 февраля 2012

Зачем изобретать велосипед?

Вы можете использовать расширение PECL для анализа BBCode

0 голосов
/ 12 февраля 2012

Взгляните на встроенный в PHP модуль Filter .Он доступен начиная с PHP 5.2 и содержит константу FILTER_VALIDATE_URL для фильтрации действительных URL.Посмотрите некоторые примеры использования .

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

...