Избегание двойных кавычек в 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()));

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

Другие вопросы по тегам