Соответствие регулярному выражению 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.

Другие вопросы по тегам