2016-10-27 2 views
-1

Ich habe diesen Hauptstich.Wie finden Sie mehrere Komma getrennte Zeichenfolge in Hauptstring

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

und ich möchte, dass jeder der folgenden Zeichenketten finden ..

DSR und FXS

i durch folgenden Code versucht, aber es kann mir perfektes Ergebnis nicht gegeben.

Code ...

<?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" ist nicht in der Zeichenfolge ... –

+0

if (strpos ($ mainstring, benötigt $)! == false) nicht der cleverste Weg, denn wenn $ mainstring mit $ beginnt benötigt, gibt strpos 0 zurück, was == false ist. – kosta

+0

"DSR, FXS" ist in der Hauptsaite in "S, SR, DSR, DS, FX, FXS, SR, DS, SR, DS, FX, S, SR, DS, FX, FXS" verfügbar. – maddy

Antwort

5

Eine Lösung wäre, um diese Zeichenfolgen durch Komma explodieren und überprüfen, ob die Folge Arrays Schnittzahl die gleiche wie Ihre Suche ist:

$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

Explode die $needed String per Befehl und durchqueren Sie das Array zu und vergleichen Sie jeden Wert des Arrays in $mainstring mit strpos() Funktion. Wenn gefunden, dann setzen Sie diesen Wert in $arrResut mit "Gefunden" oder "nicht gefunden" -Wert und schließlich drucken Sie die $arrResult, um zu sehen, welcher Wert von $ benötigt gefunden wird und welche nicht.

Auch erhöhen wir $cntNeeded Variable wenn Wert wenn gefunden. am ende von foreach schleife vergleichen wert von $cntNeeded & $arrNeeded sind gleich dann alle werte sind in $mainstring sonst nicht gefunden.

$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

Warum sollte das OP "unter dem Code versuchen"? Eine *** gute Antwort *** wird immer eine Erklärung haben, was getan wurde und warum es so gemacht wurde, nicht nur für das OP, sondern auch für zukünftige Besucher von SO. –

Verwandte Themen