看板 PHP 關於我們 聯絡資訊
我把 $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
scp958630:tcp wrapper沒開? echo出來看啊 何必用猜的 08/04 22:00
LPH66:var_dump 出來會更容易除錯 08/04 22:04
troy1005:應該不是tcp wrapper 網址是可以連的 08/04 22:08
troy1005:有試過echo~可以看到原始網頁的內容 08/04 22:09
troy1005:剛試了var_dump但似乎跟echo功能相同? 08/04 22:12
scp958630:pattern加s modifier勒? 08/04 22:47
scp958630:跟上面的 □ [問題] PHP抓原始碼內容 那篇一樣 08/04 22:48
scp958630:啊 當我沒說= = 沒看完 08/04 22:49
scp958630:你是執行哪一個版本? 08/04 22:52
troy1005:忘了說 我是用最下面的版本code 08/04 23:12
troy1005:PHP版本不清楚 開發環境是PSPad 4.5.4的 08/04 23:14
scp958630:印不出東西是完全空白還是空陣列? 08/05 04:03
scp958630:如果是完全空白 該不會是後面少了;吧.. 08/05 04:03
arrack:var_dump 就算是空的 也會印出....可能你語法有錯誤.. 08/05 15:42
troy1005:var_dump跟echo都可以看到網址原本的內容 但陣列是空的 08/06 00:25