1

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.

Phoenix
  • 1,055
  • 1
  • 12
  • 27
  • why do you want to do that...? I guess you could add inside your html's head tag.. – Sudhir Bastakoti Jan 25 '12 at 12:07
  • 1
    possible duplicate of [PHP preg_match regular expression problem](http://stackoverflow.com/questions/4286628/php-preg-match-regular-expression-problem) – Gordon Jan 25 '12 at 12:26
  • This is either totally trivial (and the answers are that trivial as well), or you actually need to resolve relative links on client side against a base URI which would be somewhat interesting. – hakre Jan 26 '12 at 11:42

2 Answers2

2

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)
PiTheNumber
  • 22,828
  • 17
  • 107
  • 180
2

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

David Brabant
  • 41,623
  • 16
  • 83
  • 111