Qual è la sintassi corretta per preg_replace
solo la parentesi in PHP?PHP: il pregnenolone sostituisce le parentesi?
$search = preg_replace('/\(\)/','',$search);
Grazie
Qual è la sintassi corretta per preg_replace
solo la parentesi in PHP?PHP: il pregnenolone sostituisce le parentesi?
$search = preg_replace('/\(\)/','',$search);
Grazie
Supponendo che si desidera rimuovere sia (
e )
dalla stringa $search
:
$search = preg_replace('/\(|\)/','',$search);
Penso che il modo più veloce per farlo è usare il Funzione strtr
, come questa:
$search = strtr($search, array('(' => '', ')' => ''));
Questa è la sintassi corretta, anche se preg_replace è per le espressioni regolari, se si desidera solo per sostituire ()
poi str_replace è un paio di volte più veloce.
Se si desidera sostituire (
o )
ovunque si trovino, si potrebbe usare
preg_replace("/\(|\)/", "", $str);
Sì, ma dovresti usare str_replace due volte però a destra, uno per ciascuna delle parentesi? – Norse
Vero, ma scommetto 5 $ sarebbe ancora più veloce: P –
@Tony: la funzione 'strtr' può eseguire più" str_replaces "in una volta. Lo uso in una classe di template di base ... invece di loop + str_replace, solo una singola chiamata strtr ... –
Vuoi dire come questo?
$search = preg_replace('/[()]/', '', $search);
Questa operazione elimina tutte le parentesi senza tenere conto dell'accoppiamento.
parentesi senza distinzione tra maiuscole e minuscole? :) –
In genere questo è solo l'inizio ... la forza dell'abitudine. :) – Nilpo
Qui ci sono i miei risultati di un po 'di test sul campo:
preg_replace("/\(|\)/", "", $str): 1.590735912323
preg_replace('/[\(\)]/', '', $str): 1.3762638568878
strtr($str, array('(' => '', ')' => '')): 0.84079194068909
str_replace("(", "", str_replace(")", "", $str)): 0.80222821235657
Gli ultimi due sono quasi identici, come ha sottolineato J. Bruni.
Aggiungilo al benchmark: 'preg_replace ('/ [\ (\)] /', '', $ str);' - e facci sapere i risultati. –
Quindi, un paio di str_replaces è più veloce di un singolo strtr ... se l'array potrebbe essere evitato a favore di un paio di parametri di stringa, forse dovrebbe essere più veloce ... 'strtr ($ str, '()', '') '- ma questo non è il comportamento desiderato ... inoltre, avendo diversi rimpiazzi, sicuramente strtr vincerebbe! :-) –
Sì, la gamma sembra più veloce. strstr e str_replace sono quasi gli stessi, non riesco a trovare differenze notevoli nel test corrente, salgono o scendono ogni volta .. strstr sarebbe comunque una soluzione più elegante. –
Ah, grazie. Ho funzionato. – Norse
Non è necessario il wrapping extra '()' serve per esportare il modello che in questo caso non è necessario. –
@ Tony: davvero! Li ho rimossi. –