Как я могу проверить если a $string
содержит какой-либо из пунктов, выраженных во множестве?
$string = 'My nAmE is Tom.';
$array = array("name","tom");
if(contains($string,$array))
{
// do something to say it contains
}
Какие-либо идеи?
Это то, что вы хотели? Я надеюсь, что этот код компилируется :)
$string = 'My nAmE is Tom.';
$array = array("name","tom");
if(0 < count(array_intersect(array_map('strtolower', explode(' ', $string)), $array)))
{
//do sth
}
Я не думаю, что есть встроенная функция, которая будет обрабатывать то, что вы хотите. Вы можете легко написать , содержит функцию [)
, однако:
function contains($str, array $arr)
{
foreach($arr as $a) {
if (stripos($str,$a) !== false) return true;
}
return false;
}
Нечто подобное сработает:
$string = 'My nAmE is Tom.';
$array = array("name", "tom");
foreach ($array as $token) {
if (stristr($string, $token) !== FALSE) {
print "String contains: $token\n";
}
}
function contains($str, $arr)
{
$ptn = '';
foreach ($arr as $s) {
if ($ptn != '') $ptn .= '|';
$ptn .= preg_quote($s, '/');
}
return preg_match("/$ptn/i", $str);
}
echo contains('My nAmE is Tom', array('name', 'tom'));
Будет ли это сделать работу?
$words = explode(" ", $string);
$wordsInArray = array();
foreach($words as $word) {
if(in_array($word, $array)) {
$wordsInArray[] = $word;
}
}