2016-10-27 29 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。 –