一个自定义php函数出现莫名问题,请教高手~~~

来源:百度知道 编辑:UC知道 时间:2024/05/15 00:47:11
function get_url($str,$fjtop,$fjbottom,$atop,$abottom)
{
$strlen=strlen($str);
$fjbottomlen=strlen($fjbottom);
$atoplen=strlen($atop);
$abottomlen=strlen($abottom);
$array=@explode($fjtop,$str); //按分卷开始标记把整个内容分成几片.
$file=fopen("temp.txt","w"); //得到的东西就放在这个文件里.
for ($i=1;$array[$i]!="";$i++) //对各片进行循环计算
{
$fj=substr($array[$i],0,strpos($array[$i],$fjbottom)); //这个是得到分卷标题的了.
fwrite($file,$fj."\n"); //得到的标题写到文件里 while (strpos($array[$i],$atop)!=false) //再各片中找连接
{
$atoppos=strpos($array[$i],$atop); //得到第一个连接开始标记位置.
$abottompos=strpos($array[$i],$abottom,$atoppos+$atoplen); //得到结束标记的位置,在开始标记的后边找.
$a=substr($array[$i],$atoppos+$atoplen,$abottompos-$atoppos-$atoplen); //截取连接
fwrite($file,$a."\n"); //将连接写入文件
$offset=strlen($array[$i])-$abottompos-$abottomlen; //这个是下边那个语句用的参数,功能就是计算下个语句应该截取的长度.

效率不一定,不同的程度可能不同.不能说正则一定快,也不能说普通字符串操作一定快.只要你感觉不慢就行了.再说,采集的时候请求URL花费的时间较长,所以在程序上快一点慢一点没谁感觉得出来,所以我认为这方面的效率可以不用考虑.

写文件的时候一行一行的写,
读文件的时候用file()按行读.不如从数据库中读取方便.这也要看你的程序是如何运算的了.如果是要一次读完整的数据,就文件好些,如果只取一部分,不如用数据库好.

1、效率低,除非你自己处理字符串的引擎比正则的引擎效率还要好

2、需要存文件的,我一般放session里面,因为我自己做的文件分析核心,肯定没有PHP自己处理的快,因为session一般情况下,也是以文件形式存储的