2017-05-04 4 views
3

so muss ich die Ticketnummer "Ticket # 999999" aus einer Zeichenfolge extrahieren .. Wie mache ich das mit Regex.brauche Hilfe auf regex in preg_match_all()

meine aktuelle Regex funktioniert, wenn ich mehr als eine Nummer im Ticket # 9999 habe .. aber wenn ich nur Ticket # 9 habe, funktioniert es nicht bitte helfen Sie.

aktuelle Regex.

preg_match_all('/(Ticket#[0-9])\w\d+/i',$data,$matches); 

danke.

+0

Es ist möglich, dass eine bessere/effizientere Antwort zur Verfügung gestellt werden können, aber wir werden nicht wissen, bis Sie die vollständige Eingabe-String liefern . Wir verstehen, dass Ihre Eingabe-Zeichenfolge "Ticket # 9" sein kann, aber wir wissen nicht, wie Ihre Eingabe-Zeichenfolge aussieht, wenn Sie mehr als eine Ticket-Teilzeichenfolge erfassen müssen. Bitte bearbeiten Sie Ihre Frage, um Ihre Frage zu klären. – mickmackusa

Antwort

3

In Ihrem Muster [0-9] Matches 1 digit, \w passt eine weitere Ziffer und \d+ Streichhölzer 1+ Ziffern und erfordern somit 3 Stellen nach #.

Verwenden

preg_match_all('/Ticket#([0-9]+)/i',$data,$matches); 

Dies entspricht:

  • Ticket# - eine Zeichenkette Ticket#
  • ([0-9]+) - Gruppe 1 erfassen 1 oder mehr Ziffern.

PHP demo:

$data = "Ticket#999999 ticket#9"; 
preg_match_all('/Ticket#([0-9]+)/i',$data,$matches, PREG_SET_ORDER); 
print_r($matches); 

Ausgang:

Array 
(
    [0] => Array 
     (
      [0] => Ticket#999999 
      [1] => 999999 
     ) 

    [1] => Array 
     (
      [0] => ticket#9 
      [1] => 9 
     ) 

)