我使用以下正则表达式将网站的基地址“前置”到文档上的所有(href | src):
例如:http://www.mywebsite.com/basedir/
$output = preg_replace( "/(href|src){1}=(\'|\")*[\/]{1}(.*)(\'|\")*/ismU", "$1=$2{$baseaddress}$3$4", $output );
它工作正常,我得到这样的结果:
src="/windows/file.png"
--->
src="http://www.mywebsite.com/basedir/windows/file.png"
但我有一个问题,当src是src="//fonts.googleapis.com/fonts.css"
时
我得到:http://www.mywebsite.com/basedir//fonts.googleapis.com/fonts.css
如何修改此正则表达式仅影响仅以一(1)href|src
开头的'/
???
感谢。
答案 0 :(得分:1)
更改:[\/]{1}
收件人:\/(?!\/)
这将确保第一个斜杠之后的字符本身不是斜线。
答案 1 :(得分:0)
试试这个:
$output = preg_replace( "/(href|src){1}=(\'|\")*[\/]{1}([^\/]*)(\'|\")*/ismU", "$1=$2{$baseaddress}$3$4", $output );
使用[^/]
代替.*