检查内容是否包含特定类PHP的img

时间:2018-03-25 21:51:56

标签: php preg-match

我想检查内容是否包含图片,但要避免使用类emoji

的任何图片

这是我的代码:

if ( preg_match("/(<img[^>]+>)/i", $content) ) {
   echo 'Images is exists';
}

此代码正在搜索任何图像而不按类过滤。

我知道我可以做这样的事情:

if ( preg_match("/(<img[^>]+>)/i", $content) ) {
    if ( ! preg_match('/<img[^>]*class="emoji"[^>]*">/', $content) ) {
         echo 'Images is exists';
    }
}

但我觉得我可以在不需要超过if条件的情况下制作我需要的东西。

1 个答案:

答案 0 :(得分:0)

虽然使用正则表达式是解析HTML的一个糟糕的想法,但我假设您尝试解析的数据具有可预测的格式。

应该完成这项工作的正则表达式是:

/(<img((?!(.*?)class=['\"](.*?)emoji(.*?)['\"](.*?)).)*>)+/i

这将匹配所有类别列表中没有“表情符号”的img标记。我在那里使用负面的环顾,随时可以在这里阅读更多相关信息:http://www.rexegg.com/regex-lookarounds.html

以下是上述表达式的示例:https://regex101.com/r/4Yx1Nb/1

在大多数情况下,您应该尝试寻找HTML解析器。像这样解析标记语言并不是一个好主意。