Php 匹配数组子字符串第n个位置并显示此数组值的字符串
如果我有一个字符串是Php 匹配数组子字符串第n个位置并显示此数组值的字符串,php,Php,如果我有一个字符串是 $str = "CD"; 比, 它将只找到数组字符串下面的第3和第4个位置并获取该数组值 $arr = ["ABCDE", "BCDEF", "BACDF","ACDLK"]; 其输出如下所示 $arr = ["ABCDE", "BACDF"]; 有可能吗?您可以使用来实现以下目标 $arr = ["ABCDE", "BCDEF", "BACDF", "ACDLK"]; $findme = "CD"; $result = []; array_walk($arr,
$str = "CD";
比,
它将只找到数组字符串下面的第3和第4个位置并获取该数组值
$arr = ["ABCDE", "BCDEF", "BACDF","ACDLK"];
其输出如下所示
$arr = ["ABCDE", "BACDF"];
有可能吗?您可以使用来实现以下目标
$arr = ["ABCDE", "BCDEF", "BACDF", "ACDLK"];
$findme = "CD";
$result = [];
array_walk($arr, function ($mystring) use (&$result, $findme) {
// check if string contains and its position index 0 means 1
// and so on
if (strpos($mystring, $findme) == 2) {
$result[] = $mystring;
}
});
print_r($result);
输出
Array
(
[0] => ABCDE
[1] => BACDF
)
我也试过了
$arr = ["ABCDE", "BCDEF", "BACDF", "ACDLK"];
$result = [];
$search = "CD";
function Search($search, $string){
$position = stripos($string, $search, 2);
if ($position == true){
return true;
}
else{
return false;
}
}
foreach($arr as $key){
if(Search($search, $key)){
$result[] = $key;
}
}
print_r($result);
使用strpos()
时,您必须小心,您要查找的字符串不在您要查找的位置之前的字符串中
因此,在查找CD
时,cdcdcde
将为strpos()
提供0,因此可能会因为字符串位置不正确而拒绝该字符串
一个简单的替代方法是使用substr()
提取要检查的字符,并将其与后面的字符串进行比较。我已经参数化了,所以很容易修改
$arr = ["ABCDE", "BCDEF", "BACDF", "ACDLK","ABDCDE", "CDCDE"];
$str = "CD";
$strLen = strlen($str);
$position = 2;
$result = [];
foreach( $arr as $string ) {
if (substr($string, $position, $strLen) == $str) {
$result[] = $string;
}
};
print_r($result);
将给予
Array
(
[0] => ABCDE
[1] => BACDF
[2] => CDCDE
)
可能吗是的,你怎么解释呢-@Nigelren到目前为止你做了什么?你能解释一下你想从
$arr
中过滤元素的逻辑吗?通过在单个字符串中写入与after($str
)值匹配的代码来启动meStart是没有意义的,一旦这起作用,就创建一个循环来处理数组。不确定类似ABDCDE
的操作是否有效,但这将选择它。是的,因为除了CD
,没有提到检查其他字母的标准,是吗?我以为CD必须是第三和第四个字符,在上面的例子中是第四和第五个。哦,是的。我在答案上做了更改,您现在可以查看。