如何修改此正则表达式只影响“/ ...”?

时间:2014-01-07 11:11:42

标签: javascript php html regex http

我使用以下正则表达式将网站的基地址“前置”到文档上的所有(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开头的'/ ???

感谢。

2 个答案:

答案 0 :(得分:1)

更改:[\/]{1}
收件人:\/(?!\/)

这将确保第一个斜杠之后的字符本身不是斜线。

答案 1 :(得分:0)

试试这个:

$output = preg_replace( "/(href|src){1}=(\'|\")*[\/]{1}([^\/]*)(\'|\")*/ismU", "$1=$2{$baseaddress}$3$4", $output );

使用[^/]代替.*