Соответствие регулярному выражению PHP дает ошибку
Попытка проверить строку для шаблона.
$variable = '[text]';
if (eregi("/(\[(.*?)\])/", $variable)) {}
Этот код дает ошибку eregi() [function.eregi]: REG_BADRPT
Какое решение для этого?
2 ответа
Решение
Это потому, что вы используете выражение стиля preg в eregi. Вам не нужны разделители в стиле Perl.
Тем не менее, как отмечает Марк Байерс, использование preg_match - это будущее.
<?php
$variable = '[text]';
if (preg_match("/(\[(.*?)\])/", $variable)) {
echo 'ok';
}
Просто чтобы прояснить, разделители жемчужного стиля - это две косые черты. Вот как выглядит синтаксис ereg:
<?php
$str = 'abc';
if (ereg('a', $str))
{
echo 'match found'; // match found
}
?>
Я не использовал регулярные выражения, как вы это обычно делаете, просто для простоты.
Я также хочу упомянуть, что существуют многобайтовые функции ereg, которые все еще действуют, например, mb_ereg.