PDA

Просмотр полной версии : можно ли искать в строке подстроки массивом?


Дикс
26.10.2009, 19:35
т.е. я хочу сделать такую конструкцию



$str = array('first', 'second', 'third');

if(in_string($string, $str))
echo 'ok';



так, чтобы если В строке Есть хоть Один элемент Массива - вернула 1, если нет ни одного совпадения - 0

может есть стандартные функции, о которых я не знаю?

PS stristr($string, $needle) я знаю, но туда не засунешь массив. приходится писать

if(strstr($str, $one) || strstr($str, $second) || ...)

krypt3r
26.10.2009, 19:48
http://ru.php.net/in_array

Дикс
26.10.2009, 20:00
нет, он будет искать в массиве элемент который равен строке
а мне надо искать в строке подстроки (которых - целый массив)

krypt3r
26.10.2009, 20:11
ага, немного не так подумал. Стандартную функцию не знаю, может, и есть. Можно такую заюзать

function in_string ($string, $find) {
$flag = 0;
foreach ($find as $elem)
if (strpos ($string, $elem) !== false)
$flag = 1;
return $flag;
}

Дикс
26.10.2009, 21:45
так и я могу :)
тогда уж


function in_str($string, $substrs)
{
if(sizeof($substrs))
foreach($substrs as $substr)
if(stristr($string, $substr))
return 1;

return 0;
}


кто может сделать её ещё лаконичнее?

Exgibichi
27.10.2009, 09:39
как то так :D

function in_str($string, $sub) {

str_replace($sub, '', $string, $c);

if($c) { return 1; } else { return 0; }

}

Exgibichi
27.10.2009, 15:37
ну или рег экспами

function in_str($string, $sub) {

if(preg_match('/('.join('|', $sub).')/siU', $string, $m)) { return 1; } else { return 0; }

}