2015-10-26 89 views
1

如何在foreach中找到一個高亮字符串?PHP在foreach中查找字符串

這循環遍歷我的數據庫的所有用戶,我想找到所有可以說$美元。

$um = "Um"; 
foreach($users as $user){ 
    # find here the string um or something 
    echo $user; 
} 

我該如何做到這一點?

+0

看看[strpos(http://php.net/manual/en/function.strpos .php)和[str_replace](http://php.net/manual/en/function.str-replace.php)。嘗試弄清楚如何自己使用它。如果你需要更多的幫助,讓我們知道;) –

+0

看看這個[問題](http://stackoverflow.com/questions/17422370/highlight-only-typed-keywords-from-string-in-php)。 – Thaillie

+1

爲什麼不使用MySQL來做檢查? '用戶喜歡'%um%'? –

回答

4
$um = "this is string contains um"; 

    $keyword[] = "um"; // the word/parts you wanna highlight 

    $result = $um; 

    foreach($keyword as $key) { 


    $result = str_replace($key, "<strong>$key</strong>", $result); 
    }    


echo $result; 
+0

好的。這是直接的答案。 –

+0

這有效的唯一的事情是,它沒有風格的單個字符只是完整的單詞 – Slark

4

在現實中,我會在查詢做.. ..但

$um = "Um"; 

foreach($users as $user){ 

    if(strpos($user,$um) !== false){ 

     echo $user; 

    } 
} 

strpos()返回一個字符串的位置,這樣的「0」返回值是在的開頭匹配串。所以,檢查是否有 '不假'http://php.net/manual/en/function.strpos.php

+0

我推薦並檢查mb_strpos,如果工作涉及具有特殊字符的不同語言。 – Svetoslav

+0

爲什麼在查詢中使用它會更好? – Slark

+0

因爲它需要循環和測試,並且只返回想要顯示的結果。 – MaggsWeb

1

你可以使用preg_match

$um = "Um"; 
foreach($users as $user){ 
    if(preg_match("@[email protected]", $user, $matches)) echo $user; 
}