2012-05-08 106 views
0
$longString = "I walk in the park."; 
$stringArray = array("walk", "park", "beach"); 

基本上,我想搜索$longString所有在$stringArray中的子字符串。所以在這種情況下,我想找到散步和公園,然後迴應這些字符串。PHP:在字符串中搜索數組中的所有子字符串,然後回顯所有匹配?

這是可行的嗎?多謝你們!

+0

是的,這是可行的。你有什麼嘗試?因爲SO!== *「爲我編寫我的代碼k謝謝!」* – rdlowrey

+0

您有一個語法錯誤。 'array()'不是'array {)'。此外,尾隨逗號可以去。 –

回答

0

循環通過陣列並檢查是否該字符串存在於長字符串:

$longString = "I walk in the park and I like to jumprope."; 
$stringArray = array("walk" => "walk", "park" => "park", "jumprope" => "jump rope"); 

foreach($stringArray as $search => $print) { 
    if(!(strpos($longString, $search) === false)) { 
     echo $print; 
    } 
} 

Demo

+0

您可以額外/可選地使用'lcase()''$ longString'和'$ stringArray'來匹配大小寫而不區分大小寫。 –

+0

更正或更改對'stripos'的'strpos'調用以區分大小寫。 – nickb

+0

這是不正確的,因爲strpos可以返回0索引,如果字符串的開頭是substring,那麼最好使用!== false運算符。 –

0
$longString = "I walk in the park."; 
$stringArray = array("walk", "park", "beach"); 

foreach ($stringArray as $item) { 
    if (stristr($longString, $item)) 
     echo $item . "<br>"; 
} 
+0

OP沒有指定,但此方法也匹配「停放」或「擱置」...如果字邊界很重要,則需要regex。 – rdlowrey

0
$longString = "I walk in the park."; 
$stringArray = array{"walk", "park", "beach",); 

foreach($stringArray as $search) { 
    if(strpos($longString, $search) !== FALSE) { 
     echo $search; 
    } 
} 
+0

OP沒有指定,但此方法也匹配「停泊」或「擱淺」...如果字邊界很重要,則需要regex。 – rdlowrey

0

當然,這是可能的:

$longString = "I walk in the park."; 
$stringArray = array("walk", "park", "beach"); 

foreach ($stringArray as $key => $val) { 
    if (strpos($longString, $val) === false) { 
     unset($stringArray[$key]); 
    } 
} 

var_dump($stringArray); 

$stringArray將只包含出現在$longString中的字符串。

相關問題