2. function url_hq($html,$name)
{
$z='~<a href=".*">'.preg_quote($name).'</a>~Uis';
preg_match_all($z,$html,$a);
$ct=count($a[0]);
for($i=0;$i<$ct;$i++)
{
$a[0][$i]=ltrim($a[0][$i],'<a href="');
$a[0][$i]=rtrim($a[0][$i],'">'.$name.'</a>');
if(strtolower(substr($a[0][$i],0,7))!="http://")
$a[0][$i]="
http://hu60.cn/".$a[0][$i];
}
return $a[0];
}
4. 一大堆的集合[]到底要干什么?还有你的模式分隔符在哪里?
5. function url_hq($html,$name)
{
$z='[<a href="(.*)">'.preg_quote($name).'</a>]U'; //你可以使用[]作为模式分隔符,但是不要用太多,只要在开始和结束位置使用。在模式中间使用会被认为是“定义一个集合”。
preg_match_all($z,$html,$a); //"$z"是没有必要的,$z本身就是一个字符串。
$a=$a[1]; //只要正则中第一个括号里的内容。
$cnt=count($a); //count($z)什么的我就不说了。
for($i=0;$i<$cnt;$i )
{
/**
* 在正则里打个括号就解决的事干嘛写这么麻烦。不需要了。
$a[$i]=ltrim($a[$i],'<a href="');
$a[$i]=rtrim($a[$i],'">'.$name.'</a>');
**/
if(stristr($a[$i],"http://")===false)
$a[$i]="
http://hu60.cn/".$a[$i];
}
return $a;
}
8.
@老虎会游泳 不是$a[1]应该是$a[0]吧 然后我发现php很贪婪 貌似你的U用错了
11. preg_match_all('!<a href="(.*)">(.*)</a>!U',$html,$a);
var_dump($a[1]);
var_dump($a[2]);
var_dump($a[0]);
然后你就知道该怎么选择了。
你是想要打个括号,然后用$a[1][$i]直接得到你想要的部分呢,还是想自己用一大堆代码去得到?
$a[0][$i]=ltrim($a[0][$i],'<a href="');
$a[0][$i]=rtrim($a[0][$i],'">'.$name.'</a>');
12.
@老虎会游泳 不对 我运行后把从第一个<a href 到$name</a> 好像u关了前面的贪婪模式但前面的没关
13. 我运行后把从第一个<a href 到$name</a>给匹配了 好像u关了后面的贪婪模式但前面的没关
14.
@五角圆星,你必须使用大写的U。小写的u表示使用utf-8编码