5 回答
TA贡献1784条经验 获得超2个赞
您可以简单地测试第一个分解的部分是否包含逗号:
$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
TA贡献1936条经验 获得超6个赞
我能想到的最好办法是首先对输入进行正则表达式检查,以决定是否应该拆分它。然后,如果输入在破折号之前没有逗号,则有条件地进行拆分,否则只保留整个输入。
$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
)
TA贡献1812条经验 获得超5个赞
这将查找两个字符的位置并检查哪个是第一个。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;
TA贡献1784条经验 获得超7个赞
使用变量,例如:
$exploded = explode('-', $searchParam, 2);
然后使用 if 条件计算数组中的值:
if (count($exploded) > 1) {
list($key, $value) = $exploded;
} else {
// Something else
}
- 5 回答
- 0 关注
- 109 浏览
添加回答
举报