[請益] 求救!! Re: [請益] 字串比對的問題

看板PHP作者 (小新)時間13年前 (2011/08/04 21:33), 編輯推噓1(1014)
留言15則, 4人參與, 最新討論串1/1
我把 $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

08/04 22:00, , 1F
tcp wrapper沒開? echo出來看啊 何必用猜的
08/04 22:00, 1F

08/04 22:04, , 2F
var_dump 出來會更容易除錯
08/04 22:04, 2F

08/04 22:08, , 3F
應該不是tcp wrapper 網址是可以連的
08/04 22:08, 3F

08/04 22:09, , 4F
有試過echo~可以看到原始網頁的內容
08/04 22:09, 4F

08/04 22:12, , 5F
剛試了var_dump但似乎跟echo功能相同?
08/04 22:12, 5F

08/04 22:47, , 6F
pattern加s modifier勒?
08/04 22:47, 6F

08/04 22:48, , 7F
跟上面的 □ [問題] PHP抓原始碼內容 那篇一樣
08/04 22:48, 7F

08/04 22:49, , 8F
啊 當我沒說= = 沒看完
08/04 22:49, 8F

08/04 22:52, , 9F
你是執行哪一個版本?
08/04 22:52, 9F

08/04 23:12, , 10F
忘了說 我是用最下面的版本code
08/04 23:12, 10F

08/04 23:14, , 11F
PHP版本不清楚 開發環境是PSPad 4.5.4的
08/04 23:14, 11F

08/05 04:03, , 12F
印不出東西是完全空白還是空陣列?
08/05 04:03, 12F

08/05 04:03, , 13F
如果是完全空白 該不會是後面少了;吧..
08/05 04:03, 13F

08/05 15:42, , 14F
var_dump 就算是空的 也會印出....可能你語法有錯誤..
08/05 15:42, 14F

08/06 00:25, , 15F
var_dump跟echo都可以看到網址原本的內容 但陣列是空的
08/06 00:25, 15F
文章代碼(AID): #1EEf-Tx4 (PHP)