2016-10-27 70 views
-1

我有這個主要的刺痛。如何在主字符串中找到多個逗號分隔的字符串

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

,我想找到每個下列字符串..

DSRFXS

我有下面的代碼,但它不能給我完美的結果嘗試。

代碼...

<?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,$需要)!== FALSE)是不是最聰明的辦法,因爲如果$ 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字符串通過命令並遍歷數組,並使用strpos()函數將每個數組值比較爲$mainstring。如果找到,則將該值用'找到'或'未找到'值放入$arrResut,最後打印$arrResult以查看找到哪些$所需的值,哪些不是。

此外,如果找到值,我們會增加$cntNeeded變量。 foreach結束時$cntNeeded & $arrNeeded的循環比較值是相同的,那麼所有的值都被找到,其他值不是$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要「在代碼下面嘗試」?一個好的答案***將總是解釋所做的事情以及爲什麼這樣做,不僅是爲了OP,還是爲了將來訪問SO。 –