5 回答

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超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貢獻(xiàn)1936條經(jīng)驗(yàn) 獲得超7個贊
我能想到的最好辦法是首先對輸入進(jìn)行正則表達(dá)式檢查,以決定是否應(yīng)該拆分它。然后,如果輸入在破折號之前沒有逗號,則有條件地進(jìn)行拆分,否則只保留整個輸入。
$searchParam = 'pattern-64587989';
$vals = [$searchParam];
if(!preg_match("/^[^,-]*,[^-]*-.*$/", $searchParam)) {
$vals = explode("-", $searchParam, 2);
}
print_r($vals);
這打?。?/p>
Array
(
[0] => pattern
[1] => 64587989
)
使用pattern,6458-7989打印輸入:
Array
(
[0] => pattern,6458-7989
)

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