ANTICHAT

ANTICHAT (https://forum.antichat.io/index.php)
-   PHP (https://forum.antichat.io/forumdisplay.php?f=37)
-   -   можно ли искать в строке подстроки массивом? (https://forum.antichat.io/showthread.php?t=151374)

Дикс 26.10.2009 19:35

можно ли искать в строке подстроки массивом?
 
т.е. я хочу сделать такую конструкцию

PHP код:


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

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

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

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

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

PHP код:

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

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

  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

так и я могу :)
тогда уж

PHP код:

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
PHP код:

function in_str($string, $sub) {
 
    
str_replace($sub, '', $string, $c);
    
    if(
$c) { return 1; } else { return 0; }
    
} 


Exgibichi 27.10.2009 15:37

ну или рег экспами
PHP код:

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



Время: 02:16