Экранирование символов php

206
04 января 2019, 08:00

Вопрос в следующем: Есть несколько строк кода для отправки через json (т.е. строкой). Так как в html "+" является знаком конкатенации, язык разметки его просто сжирает и плюсик теряется. С этим разобрался. С кавычками не до конца смог. Пример 1 (все ок):

$text = 'Some "hard" text';

т.к. кавычки разного формата, пропускает. Но если взять пример 2:

$text = 'Some 'hard' text';

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

$text = 'Some "ha'+'rd" text';
$patterns = array("/\+/","/\‘/","/\’/","/\“/","/\”/");
$replacements = array("%2B","%91","%92","%93","%94");
$text = preg_replace($patterns, $replacements, $text);

Текст берется с текстового поля ввода, и перед каждым символом вставлять "\" никто не будет. Как сделать возможным содержание в тексте кавычек - одинаковых с теми, что служат началом и концом строки? т.е. так:

$text = 'Some 'hard' text';

Заранее спасибо.

Answer 1

В PHP "+" означает добавление (операция с числами), конкатенация обозначается символом "." (точка), а если Вы хотите использовать кавычки, в таких же кавычках, хватит перед ними поставить обратный слэш:

$text = 'Some \'hard\' text';
Answer 2

Спасибо, но все было не то. Решил heredoc-синтаксисом:

$bar = <<<EOT
"Двойные кавычки" 'Одинарные' и куча символов <>?!@#$%^&*()_+_=
EOT;
echo $bar;
READ ALSO
Перечисления в пхп

Перечисления в пхп

Есть такая конструкция:

209
Почему функция filemtime работает с задержкой?

Почему функция filemtime работает с задержкой?

Написал класс который отслеживает изменения в файлах, но почему-то перехват изменения происходит с задержкой в пару секунд

213
Переопределить репозиторий пакета в composer

Переопределить репозиторий пакета в composer

Столкнулся со следующей проблемой

158
поиск подстрок в массиве, состоящих из одинаковых букв

поиск подстрок в массиве, состоящих из одинаковых букв

предположим, у меня есть массив строк

244