Избегание двойных кавычек в PHP (Wordpress)
Я испытываю затруднения, избегая двойных кавычек, используя функцию addlashes PHP. Если я бегу:
$name = addslashes(get_the_title());
И заголовок содержит двойные кавычки, на выходе все еще есть двойные кавычки без каких-либо escape-символов.
например. "Приветствуя разнообразие" Иммиграционный форум
Я пытаюсь вставить данные Wordpress в генератор файлов.ICS, но не могу найти способ успешно проанализировать данные Wordpress в формат, который взаимодействует с форматом ICS.
РЕШЕНИЕ: Мое решение состояло в том, чтобы обойти функцию Wordpress get_the_title(), используя вместо этого $post->post_title. Когда я переключился, побег работал правильно с аддлашем.
3 ответа
Кудрявые цитаты - это определенно то, что нужно проверить Вы также можете проверить ожидаемый ввод функции, которую вы отправляете. Функция addlashes() определенно добавит escape-символы, но если вы отправляете эти выходные данные в другую функцию, которая удаляет их, это может создать впечатление, что косые черты не экранированы.
Может быть, помогает тримминг (для удаления обычных кавычек):
$name = addslashes(trim(get_the_title(), '"'));
Для других видов цитат вы можете попробовать использовать регулярные выражения. Что-то вроде:
$title = preg_replace("/[\'\"\”\“]+/";, '', get_the_title());
$name = addslashes($title);
Если кавычки не экранируются, они не являются истинными двойными кавычками. Возможно, ваша строка находится в многобайтовой кодировке, или они представляют собой "причудливые кавычки".
Эта функция часто сортирует это:
function convert_fancy_quotes ($str) {
return str_replace(array(chr(145),chr(146),chr(147),chr(148),chr(151)),array("'","'",'"','"','-'),$str);
}
Так что постарайтесь:
$name = addslashes(convert_fancy_quotes(get_the_title()));
... хотя, если это проблема, им, вероятно, все равно не нужно бежать, в зависимости от того, что вы делаете с результатом.