Почему preg_replace выдает ошибку «Неизвестный модификатор»? - PullRequest
12 голосов
/ 22 июня 2009

Я получаю эту ошибку:

Предупреждение: preg_match () [function.preg-match]: неизвестно модификатор 't' в D: \ XAMPP \ HTDOCS \ Администратор \ Components \ com_smms \ функции \ plugin.php по линии 235

на:

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

Я делаю var_dump для $ result-> module_pregmatch и получаю следующее:

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)

Может кто-нибудь сказать, что я делаю не так? Я застрял на этой ошибке слишком долго ...

1 Ответ

37 голосов
/ 22 июня 2009

Вы используете прямую косую черту в качестве разделителя шаблонов регулярных выражений, поэтому /<title>(.*)</title>/Ui' не будет работать (</title> имеет косую черту).

Вы должны быть в состоянии избежать косой черты или использовать другой разделитель, который не содержится в шаблоне, например

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

или

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