Perché preg_replace mi genera un errore "Modificatore sconosciuto"? [duplicare]
-
06-07-2019 - |
Domanda
Questa domanda ha già una risposta qui:
Continuo a ricevere questo errore:
Avviso: preg_match () [function.preg-match]: sconosciuto modificatore 't' in D: \ xampp \ htdocs \ Administrator \ componenti \ com_smms \ funzioni \ plugin.php sulla linea 235
on
$PageContent = preg_replace($result->module_pregmatch, '', $PageContent);
Faccio un var_dump su $ result- > module_pregmatch e ottengo quanto segue:
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)
Qualcuno può dirmi cosa sto facendo di sbagliato? Sono stato bloccato su questo errore per troppo tempo ...
Soluzione
Stai usando barre rovesciate come delimitatore del pattern regex, quindi /<title>(.*)</title>/Ui '
non funzionerà ( < / titolo >
ha una barra).
Dovresti essere in grado di sfuggire alla barra o utilizzare un delimitatore diverso che non è contenuto nel modello, ad esempio
'/<title>(.*)<\/title>/Ui' //(esacaping)
o
'~<title>(.*)</title>~Ui' //different delimiter