preg_match Слэши

163
14 сентября 2017, 18:28

Добрый день, есть фрагмент кода:

if (preg_match("/[\\\\|/]/ui", $cellValues)) { //Проверка на слэши
            echo "<br>2 Пропущена позиция", $row_position, "<br>"; 
            $row_position = $row_position+1; //переходим на след строку, если слэши есть
        }

Мне необходимо отсеивать все записи, содержащие бэкслэш, вертикальный и обычный. Регулярное выражение в коде работает на сайте http://www.phpliveregex.com/p/li3 , но на практике выбивает ошибку:

Warning: preg_match() [function.preg-match]: Unknown modifier ']' 

Подскажите, пожалуйста, что делаю не так?

Answer 1

Регулярные выражения в PHP необходимо использовать внутри разделителей. Этолибо парные символы (кавычки, скобки), либо какой-нибудь символ (часто используют обратный слеш, так как только этот символ используется в JavaScript, и многие к нему привыкли).

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

Подойдут такие выражения:

"/[\\\\|\/]/u"
"~[\\\\|/]~u"
"#[\\\\|/]#u"
"@[\\\\|/]@u"

И так далее. Модификатор i здесь не требуется, так как в выражении нет букв.

READ ALSO
неожиданное поведение php

неожиданное поведение php

доброго времени сутокобъясните, пожалуйста, почему

137
Условия в роутинге Laravel

Условия в роутинге Laravel

Как на laravel сделать условие в роутингеК примеру есть правило

129
Поиск буквы в файле

Поиск буквы в файле

Как дописать программу? Дан многострочный файл с текстом, подсчитать кол-во гласных и согл букв и вывести их второй файл

179
Работа фильтра Search and Filter Pro (WordPress)

Работа фильтра Search and Filter Pro (WordPress)

Я пытаюсь сделать фильтр по таксономии (ещё один тип меток)Фильтр работает сортируя только один тип записи, но когда я выбираю несколько - они...

142