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

我的html代码有许多锚点和链接,例如:</ p>

 &lt; script src =“/ Common / Scripts / jquery-1.4.4.min.js”type =“text / javascript”&gt;&lt; / script&gt;

&lt; link href =“/ Common / Css / UserAdmin.css”rel =“stylesheet”type =“text / css”/&gt;
&lt; a href =“/ test.php”&gt; test&lt; / a&gt; &LT; /锂&GT;

</ code> </ pre>

我想将它们更改为:</ p>

 &lt; script src =“http:// www。  mydomain.com/Common/Scripts/jquery-1.4.4.min.js“type =”text / javascript“&gt;&lt; / script&gt;

&lt; link href =“http://www.mydomain.com/Common/Css/UserAdmin.css”rel =“stylesheet”type =“text / css”/&gt;
&lt; a href =“http:/ /www.mydomain.com/test.php"&gt;test&lt;/a&gt;&lt;/li>

</代码> </ PRE>

即。 在每个src和href值之前添加 http://www.mydomain.com </ code>,如何使用regex表达式实现此目的。 PS:我使用PHP语言。</ p>
</ div>

展开原文

原文

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.

dt4233
dt4233 这要么完全无关紧要(答案也是微不足道的),或者你实际上需要在客户端解析基本URI的相对链接,这有点有趣。
8 年多之前 回复
drjv5597
drjv5597 可能重复的PHPpreg_match正则表达式问题
8 年多之前 回复
dtttlua7165
dtttlua7165 你为什么要这样做......?我想你可以在html的head标签中添加<basehref=“mydomain.com”/>..
8 年多之前 回复

2个回答



使用以下正则表达式:</ p>

 ([\ b] *)(src  | href)([\ b] * = [\ b] *“)(。+?”)
</ code> </ pre>

并替换为:</ p>

\ 1 \ 2 \ 3http://www.mydomain.com \ 4
</ code> </ pre>

这里的主要思想是使用懒惰 运算符“+?”</ p>

  Group1:([\ b] *)0个或多个空格...后跟
Group2:(src | href)src或href .. 然后是
Group3:([\ b] * = [\ b] *“)0或更多空格后跟=后跟0或更多空格后跟引号...后跟
Group4 :(。+?” )任何一组字符,直到最近的引用
</ code> </ pre>

然后替换为匹配Group1然后Group2然后Group3,插入 http://www.mydomain.com ,然后匹配Group4的内容</ p>
</ div>

展开原文

原文

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

douqiao5552
douqiao5552 是的,你是对的。 我的错。
8 年多之前 回复
doujing5435
doujing5435 \ b是空白的? 我认为它与词边界位置相匹配。
8 年多之前 回复



如果你不需要,不要用regexp伤害自己。</ p>

  $ search = array('&lt; script src =“/','&lt; link href =”/','&lt; a href =“/'); 
$ d ='http://www.mydomain .com';
$ replace = array('&lt; script src =“'。$ d。'/','&lt; link href =”'。$ d。'/','&lt; a href =“ '。$ d。'/');
str_replace($ search,$ replace,$ s)
</ code> </ pre>
</ div>

展开原文

原文

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)

dongqindu8110
dongqindu8110 没问题,伙伴。 只要你的问题得到解决,我就可以了;)
8 年多之前 回复
dougan1465
dougan1465 谢谢,但我只能选择一个接受答案。
8 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐