У меня есть эти теги HTML:
<div class="title">Copy me if you can</div>
поэтому я хочу использовать preg_match, чтобы взять «Скопировать меня, если можно». Я использую этот шаблон preg:
$preg = "<div class=\"title\">(.+?)</div>";
Поэтому я написал этот код
$match = preg_match($preg,$content);
Вывод браузера:
Warning: preg_match() [function.preg-match]: Unknown modifier '('
Какие
Вы забыли разделитель
$preg = '~<div class="title">(.+?)</div>~';
Первая буква в шаблоне всегда определяет используемый разделитель. В вашем случае это <
, поэтому конечный разделитель равен >
. Все после этого используется как специальный модификатор, который изменяет специфическое поведение. (
не является допустимым модификатором. То, что сообщение об ошибке хотело рассказать вам 🙂
Попробуйте: $preg = '/<div class="title">([^<]+)</div>/';
Лично, когда задействован HTML, я должен уклоняться от разделителя defacto /
и использовать # вместо этого, поэтому вам не нужно забывать избегать любых закрывающих HTML-тегов.
$preg = '#<div class="title">([^<]+)</div>#';
Вам нужно добавить delimites к вашему регулярному выражению. Попробуй это:
$preg = "/<div class=\"title\">(.+?)<\/div>/";
/
являются разделителями, которые отмечают начало и остановку вашего регулярного выражения. Причина разделителей заключается в том, что вы можете добавлять флаги в свое регулярное выражение. Эти флаги вставляются после вашего регулярного выражения. Пример:
$preg = "/<div class=\"title\">(.+?)<\/div>/i";
Я добавил i
в качестве модификатора, отмечая поиск в регулярном выражении как нечувствительный к регистру.
У меня такая же проблема, и я задаюсь вопросом, могу ли я сделать то же самое, например: Предупреждение: preg_match () [function.preg-match]: Неизвестный модификатор 't' in / home / 08 / public / www / wp-content / plugins /woocommerce-gateway-dibs-form/gateway-dibs.php в строке 707
Это код: if (preg_match ($ _ SERVER ["REQUEST_URI"], 'woocommerce / dibscancel')! == false) {
header("HTTP/1.1 200 Ok"); $callback = new WC_Gateway_Dibs; $callback->cancel_order(stripslashes_deep($_REQUEST)); return; }