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

问题描述 投票:1回答:5

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

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

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

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

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

如果第一个符合条件是逗号,我不想爆炸。

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

php
5个回答
0
投票

例如,使用变量:

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

然后使用if条件对数组中的值进行计数:

if (count($exploded) > 1) {
    list($key, $value) = $exploded;
} else {
    // Something else
}

0
投票

这会查找两个字符的位置,并先检查哪个。使用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;

0
投票

[here,您可以用它来执行条件检查。

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

0
投票

我能想到的最好的办法是首先对输入进行正则表达式检查,以确定是否应该分割输入。然后,如果输入在破折号前没有逗号,则有条件地进行拆分,否则只需保留整个输入即可。

$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
)

0
投票

您可以简单地测试第一个分解部分是否包含逗号:

$parts = explode('-', $searchParam);

if (count($parts) > 0 && strpos($parts[0], ',') === false) {
  list($key, $value) = $parts;  // or better: [$key, $value] = $parts;
} else {
  // Nope
}

Demo:https://3v4l.org/mQX7n

© www.soinside.com 2019 - 2024. All rights reserved.