2009-06-22 14 views
12

Continuo a ricevere questo errore:Perché preg_replace mi genera un errore "Unknown modifier"?

Warning: preg_match() [function.preg-match]: Unknown modifier 't' in D:\xampp\htdocs\administrator\components\com_smms\functions\plugin.php on line 235

on:

$PageContent = preg_replace($result->module_pregmatch, '', $PageContent); 

faccio un var_dump sul $ result-> module_pregmatch e ottengo il seguente:

string '/<title>(.*)</title>/Ui' (length=23) 

string '/<meta[^>]*name=["|\']description["|\'][^>]*content=["|\'](.*)["|\']\s*\/>/Ui' (length=77) 

string '/<meta[^>]*name=["|\']keywords["|\'][^>]*content=["|\'](.*)["|\']\s*\/>/Ui' (length=74) 

string '/<meta[^>]*name=["|\']author["|\'][^>]*content=["|\'](.*)["|\']\s*\/>/Ui' (length=72) 

string '/<meta[^>]*name=["|\']copyright["|\'][^>]*content=["|\'](.*)["|\']\s*\/>/Ui' (length=75) 

string '/<meta[^>]*name=["|\']robots["|\'][^>]*content=["|\'](.*)["|\']\s*\/>/Ui' (length=72) 

string '/<meta[^>]*http=equiv=["|\']content-language["|\'][^>]*content=["|\'](.*)["|\']\s*\/>/Ui' (length=88) 
string '/<meta[^>]*http-equiv=["|\']content-type["|\'][^>]*content=["|\'](.*)["|\']\s*\/>/Ui' (length=84) 

string '/<link[^>]*href=["|\'](.*)["|\'][^>]*rel=["|\']shortcut[^>]*icon["|\'][^>]*type=["|\']image\/x-icon["|\']\s*\/>/Ui' (length=114) 

string '/<link[^>]*href=["|\'](.*)["|\'][^>]*rel=["|\']alternate["|\'][^>]*type=["|\']application\/rss\+xml["|\'][^>]*title=["|\'](.*)["|\'][^>]\/>/Ui' (length=142) 

string '/<link[^>]*href=["|\'](.*)["|\'][^>]*rel=["|\']alternate["|\'][^>]*type=["|\']application\/atom\+xml["|\'][^>]*title=["|\'](.*)["|\'][^>]\/>/Ui' (length=143) 
Can

qualcuno per favore dimmi cosa sto sbagliando? Sono rimasto bloccato su questo errore per troppo tempo ...

risposta

37

Si utilizzano le barre di avanzamento come delimitatore del modello di espressione regolare, pertanto /<title>(.*)</title>/Ui' non funzionerà (</title> ha una barra in avanti).

Si dovrebbe essere in grado di sfuggire alla barra o utilizzare un delimitatore diverso che non è contenuta all'interno del modello, ad esempio

'/<title>(.*)<\/title>/Ui' //(esacaping) 

o

'~<title>(.*)</title>~Ui' //different delimiter 
Problemi correlati