Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Тексты > Откуда-то вылазят лишние кавычки


Автор: stalker2000 9.3.2015, 16:35
Приветствую! Пытаюсь простейшей регуляркой получить кодировку страницы:
Код
preg_match('/<meta\s+(?:.*)charset="{0,1}(.*)"{0,1}\s*\/{0,1}>/isU', $html, $matches)

на строке вида
Код
<meta http-equiv="content-type" content="text/html; charset=utf-8" />

всё идеально при любых вариантах: с кавычками и без, с завершающим слешем и без. Но на строке вида
Код
<meta charset="utf-8" />

почему-то в результате оказывается первая кавычка:
Код

Array
(
    [0] => <meta charset="utf-8">
    [1] => "utf-8
)

Не могу въехать, почему так?

Автор: Aliance 10.3.2015, 08:36
Цитата

preg_match('/<meta\s+(?:.*)charset="{0,1}(.*)"{0,1}\s*\/{0,1}>/isU', $html, $matches)

выделенный мною квантификатор является не жадным, поэтому он захватывает кавычку. для исправления достаточно сделать его жадным, вот так: "{0,1}?
https://regex101.com/r/tK9yG5/1

Автор: stalker2000 11.3.2015, 13:07
Aliance, дошло, спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)