如何编写一个正则表达式来替换锚点和链接值


How to write a regex expression that replace anchors and links value

我的html代码有许多锚和链接,例如:

<script src="/Common/Scripts/jquery-1.4.4.min.js" type="text/javascript"></script>  
<link href="/Common/Css/UserAdmin.css" rel="stylesheet" type="text/css" />
<a href="/test.php">test</a></li> 

我想把它们改成:

<script src="http://www.mydomain.com/Common/Scripts/jquery-1.4.4.min.js" type="text/javascript"></script>  
<link href="http://www.mydomain.com/Common/Css/UserAdmin.css" rel="stylesheet" type="text/css" />
<a href="http://www.mydomain.com/test.php">test</a></li> 

即。在每个src和href值之前添加一个http://www.mydomain.com,如何使用regex表达式实现这一点。附言:我使用PHP语言。

使用以下正则表达式:

(['b]*)(src|href)(['b]*=['b]*")(.+?")

并替换为:

'1'2'3http://www.mydomain.com'4

这里的主要思想是使用惰性运算符"+?"

Group1: (['b]*)          0 or more blanks ... followed by 
Group2: (src|href)       src or href ... followed by 
Group3: (['b]*=['b]*")   0 or more blanks followed by = followed by 0 or more blanks followed by a quote ... followed by 
Group4: (.+?")           any group of characters until the nearest quote

然后替换为匹配Group1、Group2和Group3的内容,插入http://www.mydomain.com,则与Group4 匹配的内容

如果不需要,不要用regexp伤害自己。

$search = array('<script src="/', '<link href="/', '<a href="/');
$d = 'http://www.mydomain.com';
$replace = array('<script src="'.$d.'/', '<link href="'.$d.'/', '<a href="'.$d.'/');
str_replace($search, $replace, $s)