file_get_contents只读取网页的部分内容

 更新时间:2016年11月25日 15:56  点击:1717
file_get_contents只读取网页的部分内容,其实这就是采集文章最简单最原始的做法了。

在php教程中

file_get_contents函数可以打开本地文件,也可能读取远程文件

用法

file_get_contents( $url);

下面我们来看一下file_get_contents采集远程网站的内容的实例

 代码如下 复制代码

$url = http://www.111cn.net

$content = file_get_contents( $url);

if( $content )

{

   $array = explode('<title>', $content);print_r($array);

}

else

{

   echo '未采集成功';

}

//如果成功输出为

array(

0=>网页制作教程教程--网页设计教程网-提供专业网页设计与网页制作教程

)

好了就做完了。

看看读取远程服务器内容的方法,可以和用fsockopen,fopen(需要设置allow_url_open)等函数来实现

在php教程中,获得二维或多维数组的第一维的长度,这是个常用的程序判断,比如你读取的数组是一个二维数组:

<?php
$arr=array(
                 0=>array('title' => '新闻1', 'viewnum' => 123, 'content' => 'ZAQXSWedcrfv'),
                 1=>array('title' => '新闻2', 'viewnum' => 99, 'content' => 'QWERTYUIOPZXCVBNM')
                );
?>


如果你想统计数组$arr的长度,也就是说该二维数组只有两条新闻,你想要的数字也是2,但是如果使用count($arr)不同版本的php,统计的结果是不一样的;
后来在php手册中发现,count函数还有第二个参数,解释如下:
count函数有两个参数:
0(或COUNT_NORMAL)为默认,不检测多维数组(数组中的数组);
1(或COUNT_RECURSIVE)为检测多维数组,
所以如果要判断读取的数组$arr是不是有新闻信息,就要这样写了:

<?php
if(is_array($arr) && count($arr,COUNT_NORMAL)>0 )
{
  .....
} else {
  .....
}
?>


你可以使用这样的代码来测试该函数:

<?php
$arr=array(
                 0=>array('title' => '新闻1', 'viewnum' => 123, 'content' => 'ZAQXSWedcrfv'),
                 1=>array('title' => '新闻2', 'viewnum' => 99, 'content' => 'QWERTYUIOPZXCVBNM')
               );


echo '不统计多维数组:'.count($arr,0);//count($arr,COUNT_NORMAL)
echo "<br/>";
echo '统计多维数组:'.count($arr,1);//count($arr,COUNT_RECURSIVE)
?>

我们这里总结了php 全面获取url地址栏参数多种方法哦,全部都用到了php自带的函数server
 代码如下 复制代码
<?php
//获取域名或主机地址
echo $_SERVER['HTTP_HOST']."<br>";
//获取网页地址
echo $_SERVER['PHP_SELF']."<br>";
//获取网址参数
echo $_SERVER["QUERY_STRING"]."<br>";
//来源网页的详细地址
echo $_SERVER['HTTP_REFERER']."<br>";
?>

方法二用?号表达式,

 代码如下 复制代码
echo 'http://'.$_SERVER['SERVER_NAME'].':'.$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];

方法三也是一样

 代码如下 复制代码
function getServerName()
{
$ServerName = strtolower($_SERVER['SERVER_NAME']?$_SERVER['SERVER_NAME']:$_SERVER['HTTP_HOST']);
if( strpos($ServerName,'http://') )
{
return str_replace('http://','',$ServerName);
}
return $ServerName;
}
//实例调用方法
echo getServerName();

方法四,这个比较全面的获取url参数了,首先用REQUEST_URI如果服务器不支持就用PHP_SELF再不支持

 代码如下 复制代码
QUERY_STRING
function GetCurUrl()
{
if(!empty($_SERVER["REQUEST_URI"]))
{
$scrtName = $_SERVER["REQUEST_URI"];
$nowurl = $scrtName;
}
else
{
$scrtName = $_SERVER["PHP_SELF"];
if(empty($_SERVER["QUERY_STRING"]))
{
$nowurl = $scrtName;
}
else
{
$nowurl = $scrtName."?".$_SERVER["QUERY_STRING"];
}
}
return $nowurl;
}


上面这些实例,其实都用到了php $_SEVER全局变量来实现了。

通过侦测脚本的内存使用情况,有利于代码的优化。PHP 提供了一个垃圾收集器和一个非常复杂的内存管理器。脚本执行时所使用的内存量,有升有跌。为了得到当前的内存使用情况,我们可以使用 memory_get_usage() 函数。如果需要获得任意时间点的最高内存使用量,则可以使用 memory_limit() 函数。view sourceprint?01 echo "Initial:

 代码如下 复制代码

".memory_get_usage()." bytes "; 

02 /* prints 

03 Initial: 361400 bytes 

04 */

05   

06 // let's use up some memory 

07 for ($i = 0; $i < 100000; $i++) { 

08  $array []= md5($i); 

09 } 

10   

11 // let's remove half of the array 

12 for ($i = 0; $i < 100000; $i++) { 

13  unset($array[$i]); 

14 } 

15   

16 echo "Final: ".memory_get_usage()." bytes "; 

17 /* prints 

18 Final: 885912 bytes 

19 */

20   

21 echo "Peak: ".memory_get_peak_usage()." bytes "; 

22 /* prints 

23 Peak: 13687072 bytes 

//$limit_size为限制最大文件大小
$limit_size=50000;
$file_size=$HTTP_POST_FILES['ufile']['size'];
if($file_size >= $limit_size) {
echo "你的文件超过的限制的大小<BR>";
echo "你的文件大小为= ".$file_size;
echo " K";
echo "<BR>文件大小限制为= 50000 k";
}
else {
// 上传到什么目录,也就是从临时目录拷贝到目标目录
if(copy($HTTP_POST_FILES['ufile']['tmp_name'], $path))
{
echo "上传成功<BR/>";
echo "<img src="$path" width="150" height="150">";
}

 

[!--infotagslink--]

相关文章