PHP Url正则表达式过滤

PHP Url正则表达式过滤,php,regex,Php,Regex,示例url: http://p.static.com/i/logo.jpg 我希望能够从我自己的CDN中提取字符串引用的url,提取src url以及src文件和文件夹,因此/I/logo.jpg,然后用哈希版本替换它,这样我可以使用任何哈希函数,如encode('/I/logo.jpg')。我希望返回所有匹配URL的数组,然后我可以在字符串中处理和str\u replace 有点复杂,我希望这是有道理的 谢谢函数编码($val){ 返回预更换( “/(?@Paul Dixon是的,我想写一些

示例url:

http://p.static.com/i/logo.jpg
我希望能够从我自己的CDN中提取字符串引用的url,提取src url以及src文件和文件夹,因此
/I/logo.jpg
,然后用哈希版本替换它,这样我可以使用任何哈希函数,如
encode('/I/logo.jpg')
。我希望返回所有匹配URL的数组,然后我可以在字符串中处理和
str\u replace

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

谢谢

函数编码($val){
返回预更换(

“/(?@Paul Dixon是的,我想写一些类似的东西,但后来我觉得很无聊,所以我写了代码:pI已经尝试过了,但我真的无法编写正则表达式函数来挽救我的生命。下面的preg_replace函数非常棒。我现在正在测试代码,几分钟后会报告。
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();