Phoenix
Phoenix

Reputation: 1075

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

My html code has many anchors and links such as :

<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> 

I want to change them into:

<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> 

ie. add a http://www.mydomain.com before every src and href value, how to achieve this using regex expression. PS: I use PHP language.

Upvotes: 1

Views: 191

Answers (2)

David Brabant
David Brabant

Reputation: 43489

Use the following regexp:

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

and replace with:

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

The main idea here is to use the lazy operator "+?"

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

then replace with what has matched Group1 then Group2 then Group3, insert http://www.mydomain.com, then what has matched Group4

Upvotes: 2

PiTheNumber
PiTheNumber

Reputation: 23542

Don't hurt yourself with regexp if you don't need to.

$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)

Upvotes: 2

Related Questions