一小段PHP代码问题? 我搜索了下preg_match_all好多,可惜看了感觉都不怎么和上边的问题有关系! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 首先while(ereg("HREF=\"[^\"]*\"", $line, $match)) 你对ereg理解错了, 他只能匹配一次,而且每次都是从头开始匹配。其次,ereg("HREF=\"[^\"]*\"", $line, $match)) ,因为HTML标签是不分大小写的,所以HTML里标签大小写都无所谓,但是对于正则表达式则区分大小写,所以建议用eregi并且,正则"HREF=\"[^\"]*\"" 根本没匹配东西,应该是"HREF=\"([^\"]*)\""才对你是不是想截取所有URL啊?这是我修改的``不知道我有没理解错<?php$URL = "http://www.microsoft.com/"; //start HTML page print("<HTML>\n"); print("<HEAD>\n"); print("<TITLE>取得页面的链接</TITLE>\n"); print("</HEAD>\n"); print("<BODY>\n"); $page = fopen($URL, "r");//打开URL print("链接 $URL<BR>\n"); print("<UL>\n"); while(!feof($page))//在页面中循环 { $line = fgets($page, 255); eregi("HREF=\"([^\"]*)\"", $line, $match);//打印出URL链接 print("<Li>"); print($match[1]); print("</li><BR>\n"); } print("</UL>\n"); fclose($page); //关闭页面 print("</BODY>\n"); print("</HTML>\n"); ?> ereg() 是区分大小写的.如果要用ereg的话就改用eregi()吧.eregi()是不区分大小写的. 上面的代码,输出有点问题,不好意思print("<Li>"); print($match[1]); print("</li><BR>\n"); 改成```if ($match) echo "<li>{$match[1]}</li>"; 程序逻辑存在问题,但是没时间找了。。之前我自己写了个``你可以参考下`<?php//start HTML page echo '<HTML> <HEAD><TITLE>取得页面的链接</TITLE> </HEAD> <BODY>';$url = 'http://www.microsoft.com/';$page = file_get_contents($url);//打开URL if (!$page) exit;preg_match_all('/href="([^"]+?)"/', $page, $urls);$urls = $urls[1];print("链接 $url<BR>\n"); print("<UL>\n"); foreach ($urls as $pageurl) echo "<li>$pageurl</li>";print("</UL>\n"); //关闭页面 print("</BODY>\n"); print("</HTML>\n"); ?> 请问你这个preg_match_all('/href="([^"]+?)"/', $page, $urls);区陪的是什么? 如何同步不同库不同表,中的字段信息?mysql 查询用户回帖的标题和发帖时间 在线等`!!!!! 函数方面问题 如何防止用户刷新以至造成重复操作? php输出javascript代码问题 请问在php中,exec()为什么不能执行? PHP能不能使用global.asa文件? 请问PHP中怎样删除MYSQL数据库中的表? PHP Expert Editor2.5汉化版下载 怎样取得服务器IP? 星座选择问题 php+access中文显示乱码
你对ereg理解错了, 他只能匹配一次,而且每次都是从头开始匹配。
其次,ereg("HREF=\"[^\"]*\"", $line, $match)) ,因为HTML标签是不分大小写的,所以HTML里标签大小写都无所谓,但是对于正则表达式则区分大小写,所以建议用eregi
并且,正则"HREF=\"[^\"]*\"" 根本没匹配东西,应该是"HREF=\"([^\"]*)\""才对你是不是想截取所有URL啊?这是我修改的``不知道我有没理解错
<?php
$URL = "http://www.microsoft.com/"; //start HTML page
print("<HTML>\n");
print("<HEAD>\n");
print("<TITLE>取得页面的链接</TITLE>\n");
print("</HEAD>\n"); print("<BODY>\n"); $page = fopen($URL, "r");//打开URL print("链接 $URL<BR>\n");
print("<UL>\n"); while(!feof($page))//在页面中循环
{
$line = fgets($page, 255); eregi("HREF=\"([^\"]*)\"", $line, $match);//打印出URL链接
print("<Li>");
print($match[1]);
print("</li><BR>\n"); } print("</UL>\n"); fclose($page); //关闭页面
print("</BODY>\n");
print("</HTML>\n");
?>
如果要用ereg的话就改用eregi()吧.
eregi()是不区分大小写的.
print("<Li>");
print($match[1]);
print("</li><BR>\n");
改成```
if ($match)
echo "<li>{$match[1]}</li>";
之前我自己写了个``你可以参考下`
<?php
//start HTML page
echo '<HTML>
<HEAD>
<TITLE>取得页面的链接</TITLE>
</HEAD>
<BODY>';$url = 'http://www.microsoft.com/';
$page = file_get_contents($url);//打开URL
if (!$page)
exit;preg_match_all('/href="([^"]+?)"/', $page, $urls);$urls = $urls[1];print("链接 $url<BR>\n");
print("<UL>\n"); foreach ($urls as $pageurl)
echo "<li>$pageurl</li>";print("</UL>\n");
//关闭页面
print("</BODY>\n");
print("</HTML>\n");
?>
preg_match_all('/href="([^"]+?)"/', $page, $urls);
区陪的是什么?