PHP - 操作HTML - 将HREF添加到没有HREF的图像中

时间:2015-02-07 06:37:52

标签: php html regex

我正努力实现以下目标:

在PHP代码中,我有两个变量:

表示HTML字符串的一个

另一个只是一个网址(例如http://example.net/script.php/?param1=x&param2=y

我想找到HTML字符串中没有HREF的所有图像,并添加一个HREF标记,其中包含第二个变量所包含的URL。

示例1:

<td valign="middle"><a href="https://www.facebook.com"><img src="http://example.net/email_images/social-facebook.jpg" alt="" border="0" /></a></td>

结果:应保持不变(HREF已存在)

示例2:

<td valign="middle"><img src="http://example.net/email_images/social-facebook.jpg" alt="" border="0" /></a></td>

结果:应添加HREF标记(HREF最初不存在)

我正在尝试使用preg_replace(),但是在寻找正确的正则表达式的情况下使用它。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

试试这个

        <?php
        $html ='<span><img src="http://imageexists.png" /><span><IMg class>';

        $url = 'www.example.com';

        if(preg_match_all( '/(<img[^>]+>)+/i', $html, $matches)){
            echo '<pre>';

            if(isset($matches[1])){
                foreach($matches[1] as $match){
                    if( strpos($match, 'src=') === false){
                        $notfound = $match;
                        $br = explode('>', $notfound);
                        $final_result = $br[0].' src="'.$url.'" '.'>';
                        $html = str_ireplace( $notfound,$final_result, $html);
                    }
                }
            }
        }
        echo htmlentities($html);
        ?>