Извлечение URL из BBCode, откажитесь от всего остального - PullRequest
0 голосов
/ 08 февраля 2012

Я собираюсь удалить все, кроме URL страницы с фотографией Flickr, из блока BBCode, используя в качестве примера следующее:

[url=http://www.flickr.com/photos/vrfan/6821895917/][img]http://farm8.staticflickr.com/7025/6821895917_a372a271a2_z.jpg[/img][/url]
[url=http://www.flickr.com/photos/vrfan/6821895917/]Y159 being sanded at Daylesford[/url] by [url=http://www.flickr.com/people/vrfan/]VRfan[/url], on Flickr

Все, что мне нужно, это значение первого [url] тега (http://www.flickr.com/photos/vrfan/6821895917/) - все остальное можно удалить.

Надеюсь, мастер регулярных выражений поможет мне в этом:)

Приветствия

Майкл.

1 Ответ

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

Вы можете использовать substr() в сочетании с strpos() вместо Regex.

$matches = array();
$f = strpos($str, '[url=');
while ($f)
{
    $end = strpos($str, ']', $f);
    $f += 5;
    $matches[] = substr($str, $f, $end - $f);
    $f = strpos($str, '[url=', $end);
}
var_dump($matches);
// Regex Solution
preg_match_all('/\[url=(.+?)\]/i', $str, $matches);
var_dump($matches[1]);
...