-
一只斗牛犬
您可以简单地测试第一个分解的部分是否包含逗号:$parts = explode('-', $searchParam);if (count($parts) > 0 && strpos($parts[0], ',') === false) { list($key, $value) = $parts; // or better: [$key, $value] = $parts;} else { // Nope}演示:https ://3v4l.org/mQX7n
-
LEATH
我能想到的最好办法是首先对输入进行正则表达式检查,以决定是否应该拆分它。然后,如果输入在破折号之前没有逗号,则有条件地进行拆分,否则只保留整个输入。$searchParam = 'pattern-64587989';$vals = [$searchParam];if(!preg_match("/^[^,-]*,[^-]*-.*$/", $searchParam)) { $vals = explode("-", $searchParam, 2);}print_r($vals);这打印:Array( [0] => pattern [1] => 64587989)使用pattern,6458-7989打印输入:Array( [0] => pattern,6458-7989)
-
慕容708150
在这里你可以使用它来实现你的条件检查。// Example 1:$str1 = "pattern-64587989";$res = substr($str1, 7, 1) == '-' ? explode('-',$str1) : $str1;var_dump($res);// Exmple 2:$str2 = "pattern,6458-7989";$res = substr($str2, 7, 1) == '-' ? explode('-',$str2) : $str2;var_dump($res);
-
ABOUTYOU
这将查找两个字符的位置并检查哪个是第一个。using 的主要问题strpos()是如果找不到它会返回 false。所以这用来?: PHP_INT_MAX表示如果没有找到逗号,则将其设置为最大整数,这样比较就会认为逗号超过了-。$searchParam = 'pattern-64587989';$searchParam = 'pattern,6458-7989';// Set values to ensure they contain something$key = '';$value = '';if ( (strpos($searchParam, ",") ?: PHP_INT_MAX) > strpos($searchParam, "-") ) { list($key, $value) = explode('-', $searchParam, 2);}echo $key."/".$value;
-
噜噜哒
使用变量,例如:$exploded = explode('-', $searchParam, 2);然后使用 if 条件计算数组中的值:if (count($exploded) > 1) { list($key, $value) = $exploded;} else { // Something else}