2016-10-27 3 views
-1

У меня есть это главное жало.Как найти несколько разделенных запятыми строк в основной строке

S,SR,DSR,DS,FX,FXS,SR,DS,S,SR,DS,FX,S,SR,DS,FX,FXS 

и я хочу, чтобы найти каждый из следующих строк ..

DSR и FXS

Я попытался с помощью следующего кода, но он не может дал мне отличный результат.

код ...

<?php 
    $mainstring ="S,SR,DSR,DS,FX,FXS,SR,DS,S,SR,DS,FX,S,SR,DS,FX,FXS"; 
    $needed = "DSR,FXS"; 

    if(strpos($mainstring, $needed) !== false) { 
     echo "Found"; 
    }else{ 
     echo "Not match"; 
    } 
?> 
+5

"DSR, FXS" не в строке ... –

+0

если (StrPos ($ mainstring, $ требуется)! == ложь) не самый умный способ, потому что если $ mainstring начинается с $ необходимо, strpos вернет 0, что равно == false. – kosta

+0

«DSR, FXS» доступен в основном виде на «S, SR, DSR, DS, FX, FXS, SR, DS, S, SR, DS, FX, S, SR, DS, FX, FXS». – maddy

ответ

5

Одно решение было бы взорвать эти строки через запятую и проверить, если в результате подсчета массивов пересечение такой же, как в этой категории:

$mainstring ="S,SR,DSR,DS,FX,FXS,SR,DS,S,SR,DS,FX,S,SR,DS,FX,FXS"; 
$needed = "DSR,FXS"; 

$mainStringArr = explode(',', $mainstring); 
$neededArr = explode(',', $needed); 

if (count(array_unique(array_intersect($mainStringArr, $neededArr))) == count($neededArr)) { 
    echo 'found'; 
} else { 
    echo 'not found'; 
} 
0

взрываются $needed string по команде и пересечь массив и сравнить каждое значение массива с $mainstring с помощью функции strpos(). Если найдено, то положите это значение в $arrResut с «Найденным» или «не найденным» значением и, наконец, напечатайте $arrResult, чтобы узнать, какое значение $ необходимо найти, а что нет.

Кроме того, мы увеличиваем $cntNeeded переменную, если значение найдено. в конце foreach значение сравнения цикла $cntNeeded те же, что и все значения, находятся в $mainstring.

$mainstring ="S,SR,DSR,DS,FX,FXS,SR,DS,S,SR,DS,FX,S,SR,DS,FX,FXS"; 
$needed = "DSR,FXS"; 
$arrNeeded = explode(",", $needed); 

$arrResult = array(); 
$cntNeeded = 0; 
foreach($arrNeeded as $index => $needed) { 
    if(strpos($mainstring, $needed) !== false) { 
    $arrResult[$needed] = "Found"; 
    $cntNeeded++; 
    } 
    else{ 
    $arrResult[$needed] = "Not match"; 
    } 
} 

print("<pre> :: arrResult ::"); 
print_r($arrResult); 
print("</pre>"); 

if($cntNeeded == count($arrNeeded)) { 
    echo "Found"; 
} 
else { 
    echo "Not match"; 
} 
+1

Зачем ПП «пробовать под кодом»? *** Хороший ответ *** всегда будет объяснять, что было сделано и почему это было сделано таким образом, не только для OP, но и для будущих посетителей SO. –

Смежные вопросы