我的正则表达式替换src并使用preg_replace添加类有什么问题?

时间:2015-08-06 19:48:12

标签: php regex preg-replace

我在这里有点失落。我正在尝试将src标记替换为data:image/gif;base64,R0lGODlhAQABAPABAAAAAP///yH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==以进行延迟加载,并添加类lazyload,以便lazysizes可以正常工作。但这里没有一个是成功的。

我错过了什么吗?

public static function filter_lazy_load_gravatar( $html ) {
    $html = preg_replace( '/src="(http:\/\/([^\/]+)\/)?([^"]+)"/', 'src="data:image/gif;base64,R0lGODlhAQABAPABAAAAAP///yH5BAAAAAAALAAAAAABAAEAAAICRAEAOw=="', $html);

    $html = str_replace( 'srcset=', 'data-srcset=', $html );
    $pat = '/class="([^"]*)"/';
    $html = preg_replace($pat, 'class="$1 lazyload"', $html);
    return $html;
}

输入

<img alt="" src="http://gravatar.com/image.jpg" srcset="http://0.gravatar.com/avatar/0b11f7eec98d2ee78414a4322ea94a01?s=400&amp;d=mm&amp;r=g 2x" class="avatar avatar-200 photo" height="200" width="200">

预期输出

<img alt="" src="data:image/gif;base64,R0lGODlhAQABAPABAAAAAP///yH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" data-srcset="http://0.gravatar.com/avatar/0b11f7eec98d2ee78414a4322ea94a01?s=400&amp;d=mm&amp;r=g 2x" class="avatar avatar-200 photo lazyload" height="200" width="200">

0 个答案:

没有答案