作者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