2012-05-08 32 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中的字符串。

相关问题