在PHP中的HTML标记中动态添加img alt标记

时间:2015-03-10 10:25:17

标签: php html alt

我有HTML,我使用HTML回显到页面。 HTML标记包含图像,其中一些图像没有alt标记。没有设置图像标记的格式 - 因为它是从WordPress导出的,它已经弄乱了格式化。

我需要能够解析HTML,找到没有alt标记的图像,或者一个空的alt标记,并用文本填充它。

1 个答案:

答案 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页面....