检查 img alt 标签中是否存在单词

Check if word exists in img alt tag

我一直在四处寻找这样的脚本,但还没有找到任何匹配项。

我知道你们在座,跳出框框思考,所以我问你们。

我想(使用 PHP)检查字符串中的 标签是否在其 alt 标签中包含特定单词。例如,如果我正在寻找 gem 这个词,而我的字符串是:

I have a gem <img src="whatever.jpg" alt="This is my gem"> ye well it is.

它应该只告诉我我有一个真正的匹配项,因为 gem 在我的 alt 标签中,因此是一个匹配项。错误匹配将是:

 I have a gem <img src="whatever.jpg" alt="This is my gems"> ye well it is.

因为我要在 alt 标签中查找 gem 这个词。 希望有人能帮帮我。

试一试:

$var_string = your html img code;

if (strpos($var_string,'gem') !== false) {
    echo 'true';
}

为了在评论中详细说明 ,您可以使用以下方法解决您的问题 DOMDocument class:

$dom = new DOMDocument();
$dom->loadHTML('I have a gem <img src="whatever.jpg" alt="This is my gem"> ye well it is.');
foreach ($dom->getElementsByTagName('img') as $img) {
    $alt = $img->getAttribute('alt');
    if (preg_match('/\bgem\b/', $alt)) {
        echo "matched: $alt";
    }
}

这会将字符串解析为 HTML 并遍历每个 <img> 元素。它使用带有单词边界 \b 的正则表达式来匹配出现的单词 "gem".

输出:

This is my gem

我想到了

preg_match_all('/<img.*?alt="(.*?)".*>/',$row[content], $match);

可能会奏效,但是当我尝试打印 $match[1] 时,我只得到文本 "array"