7
Sto cercando di togliere tutti i caratteri di una stringa da una stringa eccetto:Le espressioni regolari per una serie di punti unicode PHP
- caratteri alfanumerici
- segno del dollaro (
$
) - sottolineatura (
_
) - caratteri Unicode tra i punti di codice
U+0080
eU+FFFF
ho le prime tre condizioni per fare questo:
preg_replace('/[^a-zA-Z\d$_]+/', '', $foo);
Come posso fare sulla corrispondenza della quarta condizione? I looked at using \X
ma ci deve essere un modo migliore di elencare oltre 65000 caratteri.
Sì un po 'di exa Ip renderebbe più chiaro da OP Credo che – anubhava
Inizialmente ho esitato a '\ w' perché non ero sicuro se la corrispondenza specifica della locale avrebbe influenzato le cose ma sembra che la gamma Unicode copre comunque i caratteri accentati quindi suppongo sia sicuro . Il '/ u' è quello che sto cercando, grazie. Una nota a margine, cos'è un surrogato solitario? –
@ rink.attendant.6: C'è un intervallo da 'd800' a' dfff' per specificare i surrogati in UTF-16 per consentire di specificare più caratteri. Un singolo surrogato non è un carattere valido in UTF-16 (una coppia è necessaria per specificare un carattere valido). Non riesco a ricordare bene se PCRE genera un errore se incontra un surrogato solitario nella stringa, però. – nhahtdh