Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   можно ли искать в строке подстроки массивом? (https://forum.antichat.xyz/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; }
    




Время: 20:41