PHP Url Regex过滤

时间:2010-06-20 00:02:42

标签: php regex

示例网址:

http://p.static.com/i/logo.jpg

我希望能够从我自己的CDN中提取字符串中引用的url,从src文件和文件夹中提取src url,所以/i/logo.jpg,然后用散列版本替换它,所以我可以使用任何散列函数,如encode('/i/logo.jpg')。我想要返回所有匹配网址的数组,然后我可以在字符串中处理str_replace

有点复杂,我希望这是有道理的。

由于

1 个答案:

答案 0 :(得分:0)

function encode($val) {
    return preg_replace(
        '/(?<=http:\\/\\/p\\.static\\.com\\/).*/ie',
        'hash_function("\\0")',
        $val);
}

$src = ...; //HTML data

$d = new DOMDocument;
$d->loadHTML($src);

$images = $d->getElementsByTagName("img");
for ($i = 0; $i < $images->length; $i++) {
    $curval = $images->item($i)->getAttribute("src");
    $images->item($i)->setAttribute("src", encode($curval));
}

$newHtml = $d->saveHTML();