Php 从BBCode检索url,放弃所有其他内容
我希望从BBCode块中除去除Flickr照片页面URL以外的所有URL,使用以下示例:Php 从BBCode检索url,放弃所有其他内容,php,regex,bbcode,Php,Regex,Bbcode,我希望从BBCode块中除去除Flickr照片页面URL以外的所有URL,使用以下示例: [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
[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/)
-其他所有内容都可以删除
希望正则表达式向导能在这方面帮助我:)
干杯
Michael。您可以将substr()
与strpos()结合使用,而不是使用正则表达式
$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]);
-只要修改他的第一个例子以满足您的需要。经过一番尝试,我想我已经成功了。谢谢你的指针。谢谢,肯定是沿着正确的轨道:但是,字符串可以在一个更大的字符串的中间(这是一个讨论论坛帖子)。我想不出一种方法来找到一篇文章中所有出现的Flickr BBcode,并将您建议的代码应用到每个出现的代码中。我对原始代码做了一些更改。很明显,这里面有一个bug,新代码应该可以正常工作。我还添加了另一个使用Regex的解决方案。