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$#
Другие вопросы по тегам