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

看板PHP作者 (低溫烘焙)時間13年前 (2011/04/21 10:22), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串3/3 (看更多)
※ 引述《imcar (imcar)》之銘言: : ※ 引述《asdd (我愛胖穎穎)》之銘言: : : 我想問的是如果A是一個很長的字串 B是一個存放短字串的陣列 : : 如果說 我B[]裡面的字串是A字串的子集合的話 我就把他抓出來 : : 請問有類似的function可以用嗎? : : 謝謝 : <?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.252.89.10

04/21 12:19, , 1F
很有道理,感謝
04/21 12:19, 1F

04/21 12:32, , 2F
茶~
04/21 12:32, 2F
文章代碼(AID): #1DhvJApm (PHP)
文章代碼(AID): #1DhvJApm (PHP)