Задание: Если переменная $text
не содержит специальных символов - вывести соответствующее сообщение . Никак не получается заставить программу учитывать обратный слэш, хоть с экранированием, хоть без:
$pattern = '/[~!@#$%^&*()+`\'";:<>\/\\|]/';
$text = 'ab\c';
if (!(preg_match($pattern, $text))){
echo "Great! Special symbols was not found!"; }
В данном случае - программа все равно выводит заданное сообщение
В строковых литералах с двойными и одиночными кавычками, а также Heredoc, надо использовать двойной знак обратной косой черты для обозначения символа \
. Так как для экранирования метасимволов регулярных выражений нужны два таких символа, нужно использовать четыре знака \
:
$pattern = '/[~!@#$%^&*()+`\'";:<>\/\\\\|]/';
^^^^
См. раздел Строки ("Одинарные кавычки"):
Если необходимо написать сам обратный слеш, продублируйте его (\\
)
Далее в разделе "Двойные кавычки" написано
\\
обратная косая черта
Если же объявить шаблон в строковом литерале типа Nowdoc, дополнительного экранирования \
можно избежать:
$pattern = <<<'EOT'
/[~!@#$%^&*()+`'";:<>\/\\|]/
EOT;
$text = 'ab\c';
echo "$text\n";
if (!(preg_match($pattern, $text))){
echo "Great! Special symbols was not found!";
}
См. демо онлайн.
Вариант имеется без запары с экранированием (ну только одну \' в данном случае). Скорость с регуляркой не сравнивал
$pattern = '[~!@#$%^&*()+`\'";:<>/\|]';
$text = 'ab\c';
if ( str_replace(str_split($pattern), '', $text)==$text ){
echo "Great! Special symbols was not found!"; }
Если запрещенные символы только однобайтовые - все проще:
$bad_chars = '[~!@#$%^&*()+`\'";:<>/\\|]';
$text = 'ab\\c';
if (($bad_start = strpbrk($text, $bad_chars)) === false) {
echo "Great! Special symbols was not found!";
} else {
echo "Error! Found special symbol `{$bad_start[0]}`";
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
как сделать логику, выбираешь страну(таксономия = lftcat) и после него выводятся записи этой таксономии в другом селекте
При открытии файла html не через хостинг все выглядит таким образом (изображение 1) Но на хостинге все выглядит следующим образом (изображение...
Всем привет, поставил https://githubcom/overblog/GraphQLBundle на symgony 3
вот например чтобы вывести все значения из столбца MYSQL, у меня есть такой цикл: