如何检查第一次出现是 - (减号)还是,(逗号)

如何检查第一次出现是-(减号)还是(逗号)

实际上,如果第一次出现是 - (减号),我想分解一个字符串

list($key, $value) = explode('-', $searchParam, 2);

它应该爆炸$searchParam = 'pattern-64587989';

它不应该爆炸$searchParam = 'pattern,6458-7989';

如果第一个一致是逗号,我不想爆炸。

我想要高效的代码,因为它在同一页面上多次使用。


慕虎7371278
浏览 110回答 5
5回答

一只斗牛犬

您可以简单地测试第一个分解的部分是否包含逗号:$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}
打开App,查看更多内容
随时随地看视频慕课网APP