检查内容是否包含具有特定 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 解析器。像这样解析标记语言不是一个好主意。
我想检查内容是否有图片,但要避免任何带有 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 解析器。像这样解析标记语言不是一个好主意。