[英]if preg_match with multiple words
是否可以對多個單詞使用帶有preg_match
的if語句,如果找到所有單詞,則使條件成立?
$line = "one blah, two blah blah three";
//not working code
if (preg_match('[one|two|three]' , $line)) {
echo "matched all three";
}
else{
echo "didn't match all three";
}
已經嘗試了很多東西但是如果找到一個單詞,條件總是會遇到。
使用積極的前瞻:
preg_match("%(?=.*one)(?=.*two)(?=.*three)%", $line)
編輯:說明: (?=...)
說“如果...
緊跟在這里,則匹配0長度”。 因此,您可以像這樣繪制它(使用稍微不同的原始線來演示無序位):
two blah, one blah blah three
----------=== found!
=== found!
------------------------===== found!
(其中---
是.*
,和===
是尋求字)。 當每個前瞻匹配時,匹配位置按匹配大小前進 - 但前瞻的匹配大小始終為0,因此它保持在原位(在字符串的開頭)並允許下一個前瞻再次搜索相同的空間。
使用strpos
代替檢查字符串是否包含單詞可能更符合邏輯和效率
$line = "one blah, two blah blah three";
if (strpos($line, "one") !== false &&
strpos($line, "two") !== false &&
strpos($line, "three") !== false) {
echo "matched all three";
}
else
{
echo "didn't match all three";
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.