2013-09-27 13 views
41

ho ottenuto un errore da questa espressione regolare ..Attenzione: preg_replace(): Unknown modificatore 'g'

$strTmp = preg_replace('~(<\/CharacterStyleRange>(.*?)\n*</CharacterStyleRange>)~gim ' , "</CharacterStyleRange>", $strTmp); 

errore

Attenzione: preg_replace(): Unknown modificatore 'g' in ....

perché?

risposta

106

g è implicito con preg_replace(), non è necessario includerlo.

30

Non è necessario specificare il flag globale. Dal documentation, c'è un parametro separato ($limit) utilizzato per specificare il numero di sostituzioni fare:

limite
Le sostituzioni massime possibili per ciascun modello in ogni stringa. Il valore predefinito è -1 (nessun limite).

Quindi, se non si specifica un numero positivo per questo parametro, sostituirà tutte le occorrenze di default:

$strTmp = preg_replace('~(<\/CharacterStyleRange>(.*?)\n*</CharacterStyleRange>)~im ' , "</CharacterStyleRange>", $strTmp);