2010-02-18 3 views
5

ich diese Warnung von PHP aus Split nach der Änderung erhalten preg_split für PHP 5.3 Kompatibilität preg_split:php preg_split Fehler, wenn sie von Split-Schalen

PHP Warning: preg_split(): Delimiter must not be alphanumeric or backslash 

der PHP-Code ist:

$statements = preg_split("\\s*;\\s*", $content); 

Wie kann ich den Regex reparieren, um nicht mehr zu verwenden \

Danke!

Antwort

10

Der Fehler liegt daran, dass Sie ein Begrenzungszeichen um Ihren regulären Ausdruck benötigen.

4

Obwohl die Frage zwei Minuten nach der Anfrage als beantwortet markiert wurde, möchte ich einige Informationen für die Datensätze hinzufügen.

Ähnlich wie Zeichenfolgen durch Anführungszeichen getrennt sind, werden reguläre Ausdrücke in vielen Sprachen, z. B. Perl oder JavaScript, durch Schrägstriche begrenzt. Dies wird zu einer Ausdrücke führen wie folgt aussehen:

/\s*;\s*/ 

Diese Syntax erlaubt auch Modifikatoren angeben:

/\s*;\s*/Ui 

PHP Perl-kompatible reguläre Ausdrücke (aka Preg _... Funktionen) erben diese. PHP selbst unterstützt diese Syntax jedoch nicht, daher würde das Füttern von preg_split() mit /\s*;\s*/ einen Parse-Fehler auslösen. Stattdessen schließen Sie es in Anführungszeichen ein, um eine reguläre Zeichenfolge zu erstellen.

Noch eine Sache, die Sie beachten müssen, ist, dass PHP erlaubt, das Trennzeichen zu ändern. Zum Beispiel können Sie dies verwenden:

@\s*;\s*@Ui 

Für was ist es gut? Es vereinfacht die Verwendung von Schrägstrichen innerhalb der Ausdruck, da Sie sie nicht entkommen müssen. Vergleichen:

/^\/home\/.*$/i 
@^/home/.*[email protected] 
Verwandte Themen