5 回答

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超2個(gè)贊
您可以簡(jiǎn)單地測(cè)試第一個(gè)分解的部分是否包含逗號(hào):
$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貢獻(xiàn)1936條經(jīng)驗(yàn) 獲得超7個(gè)贊
我能想到的最好辦法是首先對(duì)輸入進(jìn)行正則表達(dá)式檢查,以決定是否應(yīng)該拆分它。然后,如果輸入在破折號(hào)之前沒(méi)有逗號(hào),則有條件地進(jìn)行拆分,否則只保留整個(gè)輸入。
$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貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超4個(gè)贊
在這里你可以使用它來(lái)實(shí)現(xiàn)你的條件檢查。
// 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);

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
這將查找兩個(gè)字符的位置并檢查哪個(gè)是第一個(gè)。using 的主要問(wèn)題strpos()是如果找不到它會(huì)返回 false。所以這用來(lái)?: PHP_INT_MAX表示如果沒(méi)有找到逗號(hào),則將其設(shè)置為最大整數(shù),這樣比較就會(huì)認(rèn)為逗號(hào)超過(guò)了-。
$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貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超7個(gè)贊
使用變量,例如:
$exploded = explode('-', $searchParam, 2);
然后使用 if 條件計(jì)算數(shù)組中的值:
if (count($exploded) > 1) {
list($key, $value) = $exploded;
} else {
// Something else
}
- 5 回答
- 0 關(guān)注
- 154 瀏覽
添加回答
舉報(bào)