PHP ereg и preg
Возможный дубликат:
Функция ereg_replace() устарела - Как очистить эту ошибку?
Я получил такой скрипт из загруженного класса PHP
ereg('^([^=]*)=["\']?([^"\']*)["\']?$',$v,$a3);
Теперь выдает ошибку Устаревшая функция.
Как я могу заменить его на preg или preg match all?
3 ответа
Пытаться:
preg_match('/^([^=]*)=["\']?([^"\']*)["\']?$/', $v, $a3);
Они очень похожи. PREG включает флаги внутри шаблона, EREG - нет. По этой причине PREG нужен символ-разделитель в начале и в конце шаблона (я использовал /
). На самом деле, PREG ищет флаги после шаблона, например, чтобы получить нечувствительное к регистру совпадение, вы добавляете i
флаг:
preg_match('/^([^=]*)=["\']?([^"\']*)["\']?$/i', $v, $a3);
Самая большая разница в том, что регулярное выражение нужно начинать с определенного символа и заканчивать этим. Так что, если вы начинаете и заканчиваете регулярное выражение с / или #, все будет в порядке. Судя по всему, я не вижу ничего несовместимого. Дать ему шанс.
Подумайте об использовании обратных ссылок. Ваше выражение будет соответствовать foo="bar'
но нет foo="bar'baz"
,
#^([^=]*)=(["\']?)([^\2]*)\2$#