Проблемные символы в патерне preg_replace

165
17 декабря 2019, 13:10

Использую такой код:

   foreach ($propertyValues as $value) {
                if($value) {
                    $pattern = preg_quote('/'.$value.'/u');
                    $source = preg_replace($pattern, '', $source, 1);
                }
            }

Он рабочий, но иногда вылезают не совсем понятные Warning:

При $pattern = '/107/105/u';
Вылезает Warning: preg_replace(): Unknown modifier '1'
При $pattern = "/TL/TT/u";
Вылезает Warning: preg_replace(): Unknown modifier 'T'

Почему так? Как убрать варнинги?

Answer 1

preg_quote нужно применить к переменной, а не ко всему регулярному выражению. К тому же, так как вы решили использовать знак косой черты в качестве разделителя, его надо передать как второй аргумент в эту функцию:

$pattern = '/' . preg_quote($value, '/') . '/u';
$source = preg_replace($pattern, '', $source, 1);
READ ALSO
Нужен совет от опытных, чайнику

Нужен совет от опытных, чайнику

Всем доброго времени сутокЕсть Div(1) С заданным размером 210Х297mm A4 Div(1) в цикле заполняется другими Div(2) с плавающим размером 80Х80, 60Х40, 80Х60мм и т

149
Не могу поменять пароль от базы данных

Не могу поменять пароль от базы данных

У меня есть сайт на codeigniterУ сайта нет страницы восстановления пароля

131
Запрос в бд где значение !=0 Yii2

Запрос в бд где значение !=0 Yii2

Думал что такого полно, но мои поиски не дали результата может не правильно искал

115