检查内容是否包含具有特定 class PHP 的 img

Check if a content contains img with specific class PHP

我想检查内容是否有图片,但要避免任何带有 class emoji

的图片

这是我的代码:

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

此代码正在搜索任何未按 classes 过滤的图像。

我知道我可以做出这样的东西:

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

但我觉得不用超过if条件就可以做出我需要的东西

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

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

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

这将匹配所有 class 列表中没有 'emoji' 的 img 标签。我在那里使用负数 look-around,请随时在此处阅读更多相关信息:http://www.rexegg.com/regex-lookarounds.html

下面是上面表达式的一个例子:https://regex101.com/r/4Yx1Nb/1

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