2017-07-03 13 views
0

Ich verwende eine Regex, um eine Zeichenfolge für ein bestimmtes Format zu überprüfen.PHP-Extrakt (Parsing) Zeichenfolge

preg_match('/^\/answer ([1-9][0-9]*) (.{1,512})$/', $str, $hit, PREG_OFFSET_CAPTURE); 

diese Regex verwenden, muss der entsandte Zeichenfolge dieses Format haben:

/Antwort nx

n -> eine ganze Zahl> 0

x -> a String, 512 Zeichen maximal

Jetzt, wie man "n" und "x" den einfachsten Weg usin extrahiert g PHP? Zum Beispiel:

/56 beantwortet das ist mein Beispieltext

Sollte führen zu:

$value1 = 56; 
$value2 = "this is my sample text"; 
+0

Was gibt es in '$ hit'? –

+0

$ hit ist leer. Nicht nötig. – seikzer

+1

'$ hit' speichert Treffer. Hast du es nach 'preg_match' gedruckt? –

Antwort

1

dieses einfache Stück Code Lauf

<?php 
$hit = []; 
$str = '/answer 56 this is my sample text'; 
preg_match('/^\/answer ([1-9][0-9]*) (.{1,512})$/', $str, $hit, PREG_OFFSET_CAPTURE); 
echo'<pre>',print_r($hit),'</pre>'; 

zeigen Will Sie, dass $hit hat folgende Werte:

<pre>Array 
(
    [0] => Array 
     (
      [0] => /answer 56 this is my sample text 
      [1] => 0 
     ) 

    [1] => Array 
     (
      [0] => 56 
      [1] => 8 
     ) 

    [2] => Array 
     (
      [0] => this is my sample text 
      [1] => 11 
     ) 

) 
1</pre> 

hier:

  • $hit[0][0] ist voll Zeichenfolge, die Ihr Muster passen
  • $hit[1][0] ist ein Teil des Muster entspricht [1-9][0-9]*
  • $hit[2][0] ein Teil ist das Muster entspricht .{1,512}

Also,

$value1 = $hit[1][0]; 
$value2 = $hit[2][0];