我使用此函數將相對鏈接替換爲絕對值,並將它們作爲頁面參數以file_get_contents進行流式處理。還有一個問題,我想在我的正則表達式,忽略了人物 其功能正則表達式preg替換省略字符
$pattern = "/<a([^>]*) " .
"href=\"[^http|ftp|https|mailto]([^\"]*)\"/";
$replace = "<a\${1} href=\"?u=" . $base . "\${2}\"";
$text = preg_replace($pattern, $replace, $text);
$pattern = "/<a([^>]*) " .
"href='[^http|ftp|https|mailto]([^\']*)'/";
$replace = "<a\${1} href=\"?u=" . $base . "\${2}\"";
$text = preg_replace($pattern, $replace, $text);
$pattern = "/<img([^>]*) " .
"src=\"[^http|ftp|https]([^\"]*)\"/";
$replace = "<img\${1} src=\"" . $base . "\${2}\"";
$text = preg_replace($pattern, $replace, $text);
$pattern = "/<a([^>]*) " .
"href=\"([^\"]*)\"/";
$replace = "<a\${1} href=\"?u=" . "\${2}\"";
$text = preg_replace($pattern, $replace, $text);
所以
"UsersList.aspx?dir=09"
與此$基本URL「:
http://www.some-url.com/Members/
應及時更換到
"?u=http://www.some-url.com/Members/UsersList.aspx?dir=09"
,但我得到
"?u=http://www.some-url.com/Members/sersList.aspx?dir=09"
我不知道什麼在我的正則表達式的問題,以及如何解決它
'[^ http | ftp | https | mailto]'不會做你認爲它做的事情。 '[^ ...]'匹配不是括號內的字符之一的單個字符。這樣匹配不在'htp | fsmailo'中的單個字符。 – Barmar