Re: [請益] 字串比對的問題
※ 引述《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
討論串 (同標題文章)