Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从BBCode检索url,放弃所有其他内容_Php_Regex_Bbcode - Fatal编程技术网

Php 从BBCode检索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

我希望从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 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的解决方案。