2016-04-17 13 views
0

Ich möchte mein PHP mehrere Strings in einer Zeichenfolge beginnend mit dem @ -Symbol zu erkennen. Diejenigen, werden dann in Variablen umgewandelt werdenErkennen mehrerer Strings beginnend mit @

//whole string 
$string = "hello my name is @mo and their names are @tim and @tia." 
//while loop now? 

@mo @ Tim @tia wird dann auf Variablen wie umgewandelt werden:

$user1 = "mo"; 
$user2 = "tim"; 
$user3 = "tia"; 

Gibt es ein PHP-Befehl können Sie sie alle in einem Array zu sammeln verwenden ?

+2

OK, klingt wie ein großartiger Plan. Gehen! Irgendwelche Fragen von deiner Seite? – arkascha

Antwort

1

Reguläre Ausdrücke sind ein sehr flexibles Werkzeug zur Mustererkennung:

<?php 
$subject = "hello my name is @mo and their names are @tim and @tia."; 
$pattern = '/@(\w+)/'; 
preg_match_all($pattern, $subject, $tokens); 
var_dump($tokens); 

Die Ausgabe lautet:.

array(2) { 
    [0] => 
    array(3) { 
    [0] => 
    string(3) "@mo" 
    [1] => 
    string(4) "@tim" 
    [2] => 
    string(4) "@tia" 
    } 
    [1] => 
    array(3) { 
    [0] => 
    string(2) "mo" 
    [1] => 
    string(3) "tim" 
    [2] => 
    string(3) "tia" 
    } 
} 

So $token[1] ist das Array, das Sie interessiert sind

+0

Funktioniert sehr gut! Vielen Dank – Moritz

1

Vielleicht verwenden Sie eine Regex, um alle mit "@" beginnenden Strings zu vergleichen und in ein Array zu schreiben?

preg_match_all("|\@(.*)[ .,]|U", 
    "hello my name is @mo and their names are @tim and @tia.", 
    $out, PREG_PATTERN_ORDER); 

out hat nun die Saiten abgestimmt ..

PS: Bin kein PHP-Entwickler. Probieren Sie etwas mit dem Online-Compiler aus!

Verwandte Themen