Domanda

ricevo questo avvertimento da PHP dopo la modifica da Spalato a preg_split per PHP 5.3 compatibilità:

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

il codice php è:

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

Come posso risolvere l'espressione regolare non utilizzare più \ per

Grazie!

È stato utile?

Soluzione

L'errore è perché avete bisogno di un carattere delimitatore attorno al espressione regolare.

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

Altri suggerimenti

Anche se la questione è stata contrassegnata come risposta due minuti dopo essere stato chiesto, vorrei aggiungere alcune informazioni per i record.

simile al modo in stringhe sono delimitate da virgolette, le espressioni regolari in molte lingue, come Perl o JavaScript, sono delimitati da slash. Questo porterà a espressioni che cercano in questo modo:

/\s*;\s*/

Questa sintassi consente anche di specificare modificatori:

/\s*;\s*/Ui

le espressioni regolari compatibili con Perl di PHP (aka preg _... funzioni) ereditano questo. Tuttavia, lo stesso PHP non supporta questa sintassi modo alimentazione preg_split () con /\s*;\s*/ solleverebbe un errore di analisi. Al contrario, è racchiuso con le citazioni per costruire una stringa regolare.

Una cosa si deve prendere in considerazione è che PHP permette di cambiare il delimitatore. Per esempio, è possibile utilizzare questo:

@\s*;\s*@Ui

Che cosa è buono per? Semplifica l'uso di slash all'interno l'espressione dal momento che non hanno bisogno di sfuggire loro. Confronto:

/^\/home\/.*$/i
@^/home/.*$@i

Se non ti piace delimitatori, è possibile utilizzare T-Regx strumento :

pattern("\\s*;\\s*")->split($content):

È inoltre possibile utilizzare Pattern::of("\\s*;\\s*")->split()

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top