我想寫一個正則運算式模式,用戶輸入的值與以下陣列中的任何一個索引相匹配,你能幫我實作這件事嗎...
$cars=['bmw','Audi','Ferari','BenZ',];
$regex_pattern=^[A-Za-z] (?: [A-Za-z] )*$; //it takes the value only string with space or without space,now i want to match the pattern with the given array values .
if(preg_match($regex_pattern,$request->search)){
my logic
}
無效場景:
飛行
船
有效場景:
寶馬
奧迪
法拉利
奔馳
uj5u.com熱心網友回復:
您可以使用
$matches = preg_grep ('/^ship (\w )/i', $cars);
輸出 : []
$matches = preg_grep ('/^bmw (\w )/i', $cars);
輸出:[0 => '寶馬'];
它將回傳匹配的值陣列。您可以檢查 $matches 如果它是一個空陣列,這意味著您沒有任何匹配項。
參考:https : //www.php.net/manual/en/function.preg-grep.php
uj5u.com熱心網友回復:
$cars=['bmw','Audi','Ferari','BenZ',];
$regex_pattern=^[A-Za-z ] $; //it takes the value only string with space or without space,now i want to match the pattern with the given array values .
if(preg_match($regex_pattern,$request->search)){
my logic
}
uj5u.com熱心網友回復:
您可以撰寫一個動態模式來斷言字串中的單詞,然后使用正則運算式僅匹配允許的字符。
$cars=['bmw','Audi','Ferari','BenZ'];
$str = 'bmw
Audi
Ferari
Benz
Flight
Ship';
$regex_pattern = sprintf
("/^(?=.*\b(?:%s)\b)[A-Za-z] (?: [A-Za-z] )*$/im",
implode('|', $cars)
);
preg_match_all($regex_pattern, $str, $matches);
var_dump($matches[0]);
輸出
array(4) {
[0]=>
string(3) "bmw"
[1]=>
string(4) "Audi"
[2]=>
string(6) "Ferari"
[3]=>
string(4) "Benz"
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/385032.html
