为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕虎7371278 2022-10-28 16:12:27
如何检查第一次出现是-(减号)还是,(逗号)实际上,如果第一次出现是 - (减号),我想分解一个字符串list($key, $value) = explode('-', $searchParam, 2);它应该爆炸$searchParam = 'pattern-64587989';它不应该爆炸$searchParam = 'pattern,6458-7989';如果第一个一致是逗号,我不想爆炸。我想要高效的代码,因为它在同一页面上多次使用。
查看完整描述

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


查看完整回答
反对 回复 2022-10-28
?
LEATH

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

)


查看完整回答
反对 回复 2022-10-28
?
慕容708150

TA贡献1831条经验 获得超4个赞

在这里你可以使用它来实现你的条件检查。


// 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);


查看完整回答
反对 回复 2022-10-28
?
ABOUTYOU

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;


查看完整回答
反对 回复 2022-10-28
?
噜噜哒

TA贡献1784条经验 获得超7个赞

使用变量,例如:


$exploded = explode('-', $searchParam, 2);


然后使用 if 条件计算数组中的值:


if (count($exploded) > 1) {

    list($key, $value) = $exploded;

} else {

    // Something else

}


查看完整回答
反对 回复 2022-10-28
  • 5 回答
  • 0 关注
  • 109 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信