2017-01-29 1 views
-1

Suchen Sie nach preg_match_all, um den in einem Text gefundenen Benutzernamen zu extrahieren. Beispiel Text ist 'last_name, first_name Benutzername: Bjorge, Benutzername philip kardashian, kim Benutzername: Quecksilber, freddie'Regulärer Ausdruck zum Extrahieren von Text nach dem Benutzernamen

Was ich versuche in diesem Text zu erfassen:

-bjorge

-Philip

-mercury

habe ich versucht, dieses aber nicht gehen: preg_match_all("/(Username:|Username)\s+?(\S+)/i", $input_lines, $output_array);

Thi s ist die Ausgabe, die ich von dem bekomme, was ich versucht habe.

array(30=>last_name, first_name 1=>last_name 2=>first_name) array(30=>bjorge, philip 1=>bjorge 2=>philip) array(30=>kardashian, kim 1=>kardashian 2=>kim) array(30=>mercury, freddie 1=>mercury 2=>freddie)

+0

Was genau nicht funktioniert? Warum? Was ist mit dem Leerzeichen dort? Ist es obligatorisch? Versuchen Sie '"/Benutzername:? \ S * (\ S +)/i "' oder '"/Benutzername:? \ S * (\ w +)/i "'. –

Antwort

1

In der Zeichenfolge 'last_name, first_name Username:bjorge, Username philip kardashian, kim username: mercury, freddie', sind da keine Leerzeichen vor bjorge.

Verwendung:

preg_match_all("/(Username:|Username)\s*(\S+)/i", $input_lines, $output_array); 
//        here __^ 

ich Ihre regex vereinfacht haben:

$in = 'last_name, first_name Username:bjorge, Username philip kardashian, kim username: mercury, freddie'; 
preg_match_all("/Username:?\s*(\S+)/i", $in, $out); 
print_r($out); 

Ausgang:

Array 
(
    [0] => Array 
     (
      [0] => Username:bjorge, 
      [1] => Username philip 
      [2] => username: mercury, 
     ) 

    [1] => Array 
     (
      [0] => bjorge, 
      [1] => philip 
      [2] => mercury, 
     ) 

) 
Verwandte Themen