簡體   English   中英

如果preg_match有多個單詞

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM