Избегание двойных кавычек в PHP (Wordpress) - PullRequest
0 голосов
/ 19 января 2012

Мне трудно избежать двойных кавычек с помощью функции PHP addlashes. Если я бегу:

$name = addslashes(get_the_title());

И заголовок содержит двойные кавычки, на выходе все еще есть двойные кавычки без каких-либо escape-символов.

например. Иммиграционный форум «Приветствие разнообразия»

Я пытаюсь вставить данные Wordpress в генератор файлов .ICS, но не могу найти способ успешно проанализировать данные Wordpress в формате, который совместим с форматом ICS.

РЕШЕНИЕ: Мое решение состояло в том, чтобы обойти функцию Wordpress get_the_title (), используя вместо этого $ post-> post_title. Когда я переключился, побег работал правильно с аддлэшами.

Ответы [ 3 ]

0 голосов
/ 19 января 2012

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

Эта функция часто сортирует это:

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()));

... хотя, если это проблема, им, вероятно, все равно не нужно бежать, в зависимости от того, что вы делаете с результатом.

0 голосов
/ 19 января 2012

Вьющиеся кавычки - это определенно то, что нужно проверить.Вы также можете проверить ожидаемый ввод функции, которую вы отправляете.Функция addlashes () определенно добавит escape-символы, но если вы отправляете этот вывод в другую функцию, которая удаляет их, это может создать впечатление, что косые черты не экранированы.

0 голосов
/ 19 января 2012

Может обрезать помогает (для отбрасывания обычных кавычек):

$name = addslashes(trim(get_the_title(), '"'));

Для других видов цитат вы можете попробовать использовать регулярные выражения. Что-то вроде:

$title = preg_replace("/[\'\"\”\“]+/";, '', get_the_title());
$name = addslashes($title);
...