作者liaosankai (低温烘焙)
看板PHP
标题Re: [请益] 字串比对的问题
时间Thu Apr 21 10:21:57 2011
※ 引述《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
1F:推 imcar:很有道理,感谢 04/21 12:19
2F:推 Jerr:茶~ 04/21 12:32