2016-04-27 5 views
2

Ich habe String wie folgt:Wie bekomme ich String nach Nadel in PHP?

$str = '/test/test1/test2/test3/testupload/directory/'; 

jetzt habe ich so versucht, einige bestimmte Zeichenfolge holen wollen:

strstr($str, 'test3'); 

Aber ich möchte Wert nach Nadel holen? Wie kann ich?

Danke.

+5

Mögliches Duplikat von [Text nach Nadel holen?] (Http://stackoverflow.com/questions/2216710/get-text-after-needle) – Dhiraj

+0

Warum nicht die Zeichenfolge aufteilen und dann die letzten Array-Werte auswählen? – Abhishek

+0

@BhumiShah ist keine der Antworten richtig oder hilfreich hier? – Andreas

Antwort

2
$str = '/test/test1/test2/test3/testupload/directory/';   
$new_str = strstr($str, 'test3'); 
// Use this to get string after test3 
$new_str = str_replace('test3', '', $new_str); 
// $new_str value will be '/testupload/directory/' 
0

Sie können Index test3 herauszufinden, und dann gehen Sie vor:

<?php 
$str = '/test/test1/test2/test3/testupload/directory/'; 
$find = 'test3'; // Change it to whatever you want to find. 
$index = strpos($str, $find) + strlen($find); 
echo substr($str, $index); // Output: /testupload/directory/ 
?> 

oder explodieren() das Array mit test3 und letzte Element herausfinden. Versuchen

<?php 
$str = '/test/test1/test2/test3/testupload/directory/'; 
$find = 'test3'; // Change it to whatever you want to find. 
$temp = explode($find, $str); 
echo end(explode($find, $str)); 
?> 
0

<?php 
$str = '/test/test1/test2/test3/testupload/directory/'; 
$position = stripos($str, "test3"); 
if ($position !== false) { 
    $position += strlen("test3"); 
    $newStr = substr($str, $position); 
    echo "$newStr"; 
} else { 
    echo "String not found"; 
} 
?> 
0

Kann auch mit preg_match()

preg_match("/test3\/(.*)/", $str, $output); 
Echo $output[1]; 

Mit preg_match es ist ein eine Zeile Job zu bekommen den gewünschten Teil getan werden.
Das Muster sucht nach test3 und einem / nach, aber weil / muss es entkommen kann gibt es \/.
Dann die (.*) bedeutet alles bis Ende der Zeichenfolge übereinstimmen.
Ausgabe [0] ist die vollständige Übereinstimmung "test3/testupload ...".
Ausgabe [1] ist nur der Teil, den Sie "testupload/..." wollen.

0

Warum nicht eine Hilfsfunktion erstellen.

Hier ist eine, die ich früher gemacht habe (absolut keine Art-Attack-Referenz).

Sie haben vielleicht bemerkt, dass Ihnen diese Funktion die Möglichkeit bietet, den Inhalt nach dem ersten oder letzten Auftreten der gegebenen Nadel zurückzugeben. Also hier ist ein paar Anwendungsfälle:

$animals = 'Animals;cat,dog,fish,bird.'; 

echo str_after($animals, ','); // dog,fish,bird. 

echo str_after($animals, ',', true); // bird. 

Ich neige dazu, eine globale helpers.php Datei mit Funktionen ähnlich wie diese zu erstellen, empfehle ich Ihnen das Gleiche tun - es macht die Dinge so viel einfacher.