我有一个数组,我想检查一下键后面是否有“-main”。
foreach ($data as $key => $value) {
if (substr($key, -5) == '-main'){
....
}
}
如果他们确实有'-main',那么我想在'-main'之前获取文本。我这样做:
$myVar = substr($key, 0, -5);
是否有更有效的方法来分割密钥,所以我不必做两个子字符串? 也许我不想再使用'-main'并且想要使用不同长度的搜索项,可能作为变量。然后我必须进行字符计数而不是指定-5。有没有办法合并变量而不必进行字符计数?
答案 0 :(得分:0)
您可以使用正则表达式搜索(http://php.net/manual/de/function.preg-match.php)来完成任务。
if (preg_match('/^(.*)(-main)$/', $key, $hit)) {
$myVar = $hit[1];
// explanation:
// $hit[0] will contain the whole result string
// $hit[1] will contain the part before "-main"
// $hit[2] will be "-main"
}
正则表达式如下:
如果您切换要搜索的文本,请记住某些字符在正则表达式中具有特殊含义。所以你可能需要逃避它们。