2016-05-10 5 views
5

Index Endung findet Ich habe eine Zeichenfolge wiedie Position des letzten Vorkommens von Unter Zeichenkette in einem String mit Limit von

$string="abc @def @xyz $ @def @xyz"; 

Jetzt will i Index des letzten Auftretens von @ vor $ erhalten.

Derzeit bin ich

strrpos($string,'@'); 

dritte Parameter von strrpos wird Index beginnen, können wir Index geben zu beenden?

+0

Nun wieder, holen Sie sich die Position des letzten '$' Zeichen als Offset. – Rizier123

+0

es wird den Index der Suche in Betracht ziehen, ich will Index von @ vor $. –

+0

Was wäre, wenn die Zeichenfolge "" abc @def @xyz $ @def @xyz $ @bca "' wäre? – RomanPerekhrest

Antwort

5

Mit strrpos können Sie das letzte Auftreten erhalten. Mehr über function.strrpos

Für Ihren Zweck, müssen Sie Ihre Zeichenfolge mit $ und starten Sie die Anwendung von strrpos zum ersten index von explodierten Array zu explodieren.

Versuchen Sie folgendes:

$string="abc @def @xyz $ @def @xyz"; 
$strArr = explode('$', $string); 
$pos = strrpos($strArr[0], "@"); 

if ($pos === false) { // note: three equal signs 
    echo 'Not Found!'; 
}else 
    echo $pos; //Output 9 this case 
+1

Danke @Frayne. –

2

Eine andere Alternative: -

$string="abc @def @xyz $ @def @xyz"; 
$pos = strrpos($string, '@', -strrpos($string, '$')); 
if($pos === false){ 
    echo 'Not Found!'; 
}else{ 
    echo $pos; // 9 
} 

Hinweis: - Negative Vorzeichen wird Index der letzten Rückkehr '@' vor $ -Zeichen.

+1

Ich finde diese Lösung viel eleganter, als die Saite zuerst zu explodieren – brense

Verwandte Themen