我有HTML,我使用HTML回显到页面。 HTML标记包含图像,其中一些图像没有alt标记。没有设置图像标记的格式 - 因为它是从WordPress导出的,它已经弄乱了格式化。
我需要能够解析HTML,找到没有alt标记的图像,或者一个空的alt标记,并用文本填充它。
答案 0 :(得分:1)
试试这个:
尝试找到没有 alt 属性的 img 或宽度为空的 alt =“”。
用 alt =“my_text”
替换图像$content = '
replace alt <img src="aaaa" alt="" />
replace alt <img src="bbbb" alt=" " />
replace alt <img src="cccc" />
do nothing <img src="dddd" alt="xxxxxxx" />
do nothing <img src="eeee" alt="yyyyy" />
error: <img src="ffff" alt="" alt=" " />
';
function replace_alt($html_content, $alt_text='')
{ $count = preg_match_all('/<img[^>]+>/i', $html_content, $images);
if($count>0)
{ $o = $html_content;
$t = 'alt="'.$alt_text.'" ';
foreach($images[0] as $img)
{ $is_alt = preg_match_all('/ alt="([^"]*)"/i', $img, $alt);
if($is_alt==0)
{ $new_img = str_replace('<img ', '<img '.$t , $img);
$o = str_replace($img, $new_img, $o);
}
elseif($is_alt==1)
{ $text = trim($alt[1][0]);
if(empty($text))
{ $new_img = str_replace(trim($alt[0][0]), $t, $img);
$o = str_replace($img, $new_img, $o);
}
}
}
}
return $o;
}
echo replace_alt($content, 'TEST');
$ content 应该是您的完整HTML页面....