首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

正则表达式有关问题

2012-03-12 
正则表达式问题正则怎样匹配hrefxxxabc/efghijk.css类似这样的字符串中,href后面的地址不以http开头

正则表达式问题
正则怎样匹配href="xxxabc/efghijk.css"类似这样的字符串中,href="后面的地址不以http开头的字串

比如有两个字符串:
<link href="images/css.css" rel="stylesheet" type="text/css">
<a href="http://www.abcdefg.com/news_show.asp?id=294">

我只想匹配第一个(即href的值不以http开头的), 并把它替换成<link href=""http://www.abcdefg.com/images/css.css" rel="stylesheet" type="text/css">, 即使相对的链接变成绝对链接地址.
$str = '<link href="images/css.css" rel="stylesheet" type="text/css">';
$str = preg_replace("/href=\"((?<!http)[^\"]*?)/i","http://www.btdair.com/\1",$str);
为什么不行?


[解决办法]
额,我尝试弄了一下,弄不出来,不过建议你一步一步来,比如说用这样的办法


<link href="images/css.css" rel="stylesheet" type="text/css">
<a href="http://www.abcdefg.com/news_show.asp?id=294">

保存在in文件里,用grep慢慢调试

#grep --color -P "href=\"[^h][^\"]*\"" in
<link href="images/css.css" rel="stylesheet" type="text/css">

热点排行