2014-01-03 2 views
1

Я преобразовал все мои файлы с ereg в preg_match, но у меня все еще возникают трудности с одной строкой. Я сделал несколько изменений с разделителями, изменили апострофы 'удвоить», и переадресовывать управляющими последовательностями полоснул, и он по-прежнему бросает эту ошибку:PHP - преобразовать ereg в preg_match, но он все еще дает ошибку

Warning: preg_match() [function.preg-match]: Unknown modifier 'b' in /home/casper13/public_html/youbetcha/core/core.template.php on line 2267 

Оригинальный код:

$cache_override = array('member'); 

    foreach ($cache_override as $val) 
    { 
     if (ereg('^/'.$val.'/', $IN->URI)) 
     { 
      $query->row['cache'] = 'n'; 
     } 
    } 

Я обновлено EREG линии:

if (preg_match('@^/@'.$val.'/', $IN->URI)) 

также:

if (preg_match("@^/@".$val.'/', $IN->URI)) 

также:

if (preg_match('@\^/@'.$val.'/', $IN->URI)) 

Я пробовал много разных способов, и все та же ошибка. Не программист PHP, но я исследовал всю сеть, и, хотя я исправил 100 строк, этот просто не работает. Можете ли вы дать старой девушке ключ?

ответ

0

Разделители для регулярного выражения Perl должны находиться в начале и в конце шаблона, причем последний необязательно следует за символами-модификаторами.

if (preg_match('@^/'.$val.'/@', $IN->URI)) 

должен работать нормально, если ваш $ Вэл не всегда содержать символ @ (в противном случае вы бы избежать его, или выбрать другой символ-разделитель для регулярного выражения).

+0

РАБОТАЛ !! Спасибо Спасибо спасибо! – user3158846

+1

Также хотел сказать спасибо за объяснение. Если я снова столкнусь с этим, я понимаю, что вы говорите о шаблоне. Я смогу найти и исправить в будущем. – user3158846

+0

Приветствую вас, я был на твоей подопечной не так давно, и тогда я решил научиться правильному пути, инвестиции, о которых я никогда не сожалел :-). Справочный раздел php о PCRE бесценен. – Calimero

0

Похоже, что смешивание разделителя. Разграничитель должен быть первым и последним символом в регулярном выражении (за которым следуют только дополнительные модификаторы). Ваше регулярное выражение начинается с @ и заканчивается /, что не сработает. Попробуйте это (используя | в качестве разделителя, вы можете выбрать то, что вы хотите, пока он не существует в $val):

if (preg_match("|^/$val/|", $IN->URI)); 
Смежные вопросы