preg_match()检查没有[img] BB标签的图片网址,并使用PHP返回布尔值

时间:2014-07-18 15:28:48

标签: php html

在我的文本字段中,我将图像包含在[img] BB标签中,如

[img]http://i58.tinypic.com/i3yxar.jpg[/img]

之类的普通图片网址
http://www.jonco48.com/blog/tongue1.jpg

我希望preg_match查找纯图片网址,如果找到则返回1否则为0,如何做到这一点???

由于

4 个答案:

答案 0 :(得分:1)

使用正则表达式很难找到没有片段的模式,在这种情况下是img open和closure标签。

所以我会搜索标签内的网址,然后搜索所有网址并比较这些计数

$text = "";

$tagPattern = "/\[img\].+?\[\/img\]/";
preg_match_all($pattern, $text, $tagMatches);

$urlInTagCount = count($tagMatches[0]);

$plainPattern = "~https?://\S+\.(?:jpe?g|gif|png)(?:\?\S*)?(?=\s|$|\pP)~i";
preg_match_all($pattern, $text, $plainMatches);

$allUrlCount = count($plainMatches[0]);

return $allUrlCount > $urlInTagCount;

答案 1 :(得分:1)

如果您需要做的就是检查字符串周围是否有[img][/img]个标签,那么使用正则表达式实在是太过分了。

您可以轻松使用一些简单的字符串函数:

function isBB($s){
    $len = strlen($s);
    return $check = substr($s, 0, 5) == "[img]" && substr($s, $len-6, $len) == "[/img]";
}

isBB('[img]http://i58.tinypic.com/i3yxar.jpg[/img]') // true
isBB('http://www.jonco48.com/blog/tongue1.jpg') //false

答案 2 :(得分:0)

这里有REGEX:~https?://\S+\.(?:jpe?g|gif|png)(?:\?\S*)?(?=\s|$|\pP)~i

在PHP中:

preg_match('@\[img\](.+?)\[/img\]@', $your_text, $matches);

echo $matches[1];

答案 3 :(得分:0)

以下内容应按预期工作:

<?php

$str = '[img]http://i58.tinypic.com/i3yxar.jpg[/img]';

preg_match('@\[img\](.+?)\[/img\]@', $str, $matches);

echo $matches[1];