Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检查img alt标记中是否存在单词_Php_Image_Tags_Match_Alt - Fatal编程技术网

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

Php 检查img alt标记中是否存在单词,php,image,tags,match,alt,Php,Image,Tags,Match,Alt,我一直在寻找这样的脚本,但还没有找到任何匹配的 我知道你们在这里,开箱思考,所以我问你们 我想(用PHP)检查字符串中的标记是否在alt标记中包含特定单词。例如,如果我正在查找单词gem,我的字符串是: I have a gem <img src="whatever.jpg" alt="This is my gem"> ye well it is. 我有一颗宝石,就是它。 它应该只告诉我我有一个真正的匹配项,因为gem在我的alt标签中,因此是匹配项。错误匹配可能是: I ha

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

我知道你们在这里,开箱思考,所以我问你们

我想(用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
类解决问题:

$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";
    }
}

我想出了类似的办法

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

也许可以,但是当我尝试打印$match[1]时,我只得到文本“array”

您想要的输出是什么?使用
DOMDocument
->getAttribute+
strpos
@Ghost with
strpos
,将匹配“gem”和“gems”。最好使用带单词边界的正则表达式。@TomFenech是的,可能在属性值本身上使用正则表达式是OK这并没有回答OP的问题-他只想在alt标记内部搜索,而不是整个字符串。bulk回答说,他是对的。这是一个棘手的部分。你们应该编辑你们的问题,而不是把它作为答案发布,或者完全解决它并编辑这篇文章。这很好!但是在把我的字符串作为匹配词时遇到了麻烦,你能帮我解决吗<代码>$dom=新的DOMDocument()$dom->loadHTML($row['content']);foreach($dom->getElementsByTagName('img')as$img){if(preg_-match('\\b'+$row_-meta['keyword']+'\\b',$img->getAttribute('alt')){$counter++;}@Jonas我已经编辑了我的答案,希望它现在能满足你的要求。我无法准确地让它工作:
if(preg_-match('/\b'.$row_-meta关键字]。“\b/”,$alt{
@Jonas不知道
$row_meta['keyword']
是什么,很难说为什么。顺便说一句,你应该总是引用你的数组键。$row_meta['keyword']是我数据库输出中的一个词。现在它包含了测试,我有3张带有alt测试的图片。
带有if(preg_match('/\b$key\b/,$alt)){
它不起作用,但如果我用just test替换$key,效果会很好。问题是$key可以在数据库中更改,因此我不能只键入特定的单词,而是需要它作为我的字符串