2016-09-04 6 views
1
$str1 = '10 sold'; 

$re = "/(?<Alpha>[a-zA-Z]*)(?<Numeric>[0-9]*)/";  
preg_match_all($re, $str1, $str1matches); 

echo print_r($str1matches,1); 

druckt:Regex Spiel Position

Array 

(
    [0] => Array 
     (
      [0] => 10 
      [1] => 
      [2] => sold 
      [3] => 
     ) 

    [Alpha] => Array 
     (
      [0] => 
      [1] => 
      [2] => sold 
      [3] => 
     ) 

    [1] => Array 
     (
      [0] => 
      [1] => 
      [2] => sold 
      [3] => 
     ) 

    [Numeric] => Array 
     (
      [0] => 10 
      [1] => 
      [2] => 
      [3] => 
     ) 

    [2] => Array 
     (
      [0] => 10 
      [1] => 
      [2] => 
      [3] => 
     ) 

) 

Aber warum es so lange Array kann nicht gedruckt werden, und wie kann ich an welcher Position wird meine Werte (xxx und label) immer verfügbar sein bestimmen?

+0

* Aber warum druckt es so ein langes Array * Meinst du die leeren Übereinstimmungen oder die SubArrays? – Rizier123

+0

@ Rizier123 die leeren Übereinstimmungen – 3zzy

+0

können Sie dies * an welcher Stelle werden meine Werte (xxx und Label) immer verfügbar sein? *? – RomanPerekhrest

Antwort

1

ich ein einfaches /^([0-9]+)\s*([a-zA-Z]+)$/ regex seit you confirm verwenden würde, gibt es eine Reihe ist und dann ein Wort in der Eingabezeichenfolge:

preg_match('/^([0-9]+)\s*([a-zA-Z]+)$/', '10 sold', $str1matches, PREG_OFFSET_CAPTURE); 

Siehe PHP demo:

$str1 = '10 sold'; 
$re = "/^([0-9]+)\s*([a-zA-Z]+)$/";  
preg_match($re, $str1, $str1matches, PREG_OFFSET_CAPTURE); 
echo print_r($str1matches[1]); 
echo print_r($str1matches[2]); 

Die $str1matches[1] ein enthalten Array mit dem Wert der Gruppe 1 (Nummer) und seiner Position, und $str1matches[2] enthält ein Array mit dem Wert der Gruppe 2 (Wort) und seiner Position.