Der Martin: Regulärer Ausdruck

Beitrag lesen

Hallo Christophe,

$read = "TEST\gaga:";

if (preg_match('/[1]+\[a-z]+:/', trim($read))){
  echo $read;
}


>   
> Dies sollte doch eigentlich funktionieren? Was mache ich den noch immer falsch?  
  
Der Fehler liegt in deinem Test-String:  
  
  $read = "TEST\gaga:";  
  
Der String enthält offensichtlich keinen Backslash, sondern die Escape-Sequenz \g, die aber nicht speziell definiert ist. Ich weiß nicht, wie PHP solche undefinierten Escapes auflöst, aber lass dir den String mal direkt ausgeben - ich vermute, er lautet "TESTgaga" oder "TESTaga".  
  
Beachte den Unterschied zwischen 'einzelnen' und "doppelten" Anführungszeichen! Wenn du den String in '' setzt, wird das Ergebnis das sein, was du erwartest, denn dann werden keine Escape-Sequenzen aufgelöst. Andernfalls musst du den Backslash auch hier mit einem Backslash escapen, also doppelt notieren, um \*einen\* Backslash im String zu haben.  
  
Ciao,  
 Martin  

-- 
Zwei Dinge sind unendlich: Das Universum und die menschliche Dummheit. Beim Universum bin ich mir aber nicht ganz sicher.  
  (Albert Einstein, deutscher Physiker)  


  1. A-Z ↩︎