Почему preg_replace выдает мне ошибку «Неизвестный модификатор»?[дубликат]

StackOverflow https://stackoverflow.com/questions/1026387

  •  06-07-2019
  •  | 
  •  

Вопрос

На этот вопрос уже есть ответ здесь:

Я продолжаю получать эту ошибку:

Предупреждение:preg_match () [function.preg-match]:Неизвестный модификатор

на:

$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)

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

Это было полезно?

Решение

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

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

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

или

'~<title>(.*)</title>~Ui' //different delimiter
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top