作者troy1005 (小新)
看板PHP
标题[请益] 求救!! Re: [请益] 字串比对的问题
时间Thu Aug 4 21:33:15 2011
我把 $a="onetwothreefour";
改成 $a=file_get_contents("
http://www.XXXXXXX.com")
因为需要做一个类似字典的比对功能
所以直接丢给$a一个网页的原始码去跟$b做比对
但是改成这样後 就印不出任何东西来了
原来底下提供的code可以印出Array ( [0] => one [1] => two )
所以猜测是file_get_contents不被视为一个大的字串
请问有甚麽解决的办法呢??
谢谢板上的回答~
※ 引述《liaosankai (低温烘焙)》之铭言:
: ※ 引述《imcar (imcar)》之铭言:
: : <?php
: : $a="onetwothreefour";
: : $b=Array();
: : $b[]="one";
: : $b[]="three";
: : print_r(c($a,$b));
: : function c($str,$arr){
: : $res=Array();
: : for($i=0;$i<sizeof($arr);$i++){
: : $pattern="/{$arr[$i]}/" ;
: : if (preg_match($pattern,$str)){
: : $res[]=$arr[$i];
: : }
: : }
: : return($res);
: : }
: : ?>
: imcar这个程式写的不赖,但我把asdd的需求重新检视一次。
: 似乎用到preg_match有点over了。可以把流程想成,如果$b
: 里面的字串没有出现在$a字串,就从$b阵列中移除掉。若最後
: 取得的结果是一样的,可以考虑用较有效能的方式去完成,
: 改写後程式如下:
: $a = 'onetwothreefour';
: $b = array('one','two','five');
: print_r(c($a,$b));
: function c($str,$arr){
: foreach($arr as $i => $val){
: if(!stristr($str,$val)){
: unset($arr[$i]);
: }
: }
: return $arr;
: }
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.255.30.20
1F:→ scp958630:tcp wrapper没开? echo出来看啊 何必用猜的 08/04 22:00
2F:推 LPH66:var_dump 出来会更容易除错 08/04 22:04
3F:→ troy1005:应该不是tcp wrapper 网址是可以连的 08/04 22:08
4F:→ troy1005:有试过echo~可以看到原始网页的内容 08/04 22:09
5F:→ troy1005:刚试了var_dump但似乎跟echo功能相同? 08/04 22:12
6F:→ scp958630:pattern加s modifier勒? 08/04 22:47
7F:→ scp958630:跟上面的 □ [问题] PHP抓原始码内容 那篇一样 08/04 22:48
8F:→ scp958630:啊 当我没说= = 没看完 08/04 22:49
9F:→ scp958630:你是执行哪一个版本? 08/04 22:52
10F:→ troy1005:忘了说 我是用最下面的版本code 08/04 23:12
11F:→ troy1005:PHP版本不清楚 开发环境是PSPad 4.5.4的 08/04 23:14
12F:→ scp958630:印不出东西是完全空白还是空阵列? 08/05 04:03
13F:→ scp958630:如果是完全空白 该不会是後面少了;吧.. 08/05 04:03
14F:→ arrack:var_dump 就算是空的 也会印出....可能你语法有错误.. 08/05 15:42
15F:→ troy1005:var_dump跟echo都可以看到网址原本的内容 但阵列是空的 08/06 00:25