Специальные символы в одинарных и двойных кавычках - PullRequest
0 голосов
/ 15 сентября 2010

Я получаю поле из базы данных, которая содержит документ RTF.

Например, это может выглядеть так:

{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil\fcharset0 Calibri;}} {*\generator Msftedit 5.41.21.2509;}\viewkind4\uc1\pard\sa200\sl276\slmult1\lang7\f0\fs22 asdfasdf\par a\par sf\par asd\par fasd\par \b dfas\b0\par dfas\par }

Теперь PHP выбирает это какдвойные кавычки из базы данных, результат состоит в том, что строка не будет интерпретироваться по символам ... предполагается, что специальные символы, такие как '\ r' и '\ n', были распознаны.

Как я могу конвертировать из этого двойногов кавычки, чтобы получить все сырые символы?Или как я могу добиться, чтобы значение присваивалось в одинарных кавычках, когда я получаю его из базы данных?

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

-ralf

Ответы [ 2 ]

1 голос
/ 15 сентября 2010

Прежде всего, вы должны потратить некоторое время, кто (или что) экранирует ваш код.

Но для быстрого решения попробуйте использовать функцию stripslashes ():

$unsecaped = stripslashes( $database_data );

Но я призываю вас попытаться найти то, что ускользает от данных. Это может произойти:

  • Перед вставкой данных в базу данных. Обычно это вызвано директивой PHP magic_quotes_gpc.
  • При извлечении данных из базы данных.

Обновлено

Я не понял твою проблему ... Вы хотите сохранить все эти обратные слеши, но избегайте интерпретации \ r и \ n как возврата каретки и перевода строки ...

Попробуйте выполнить str_replace, чтобы найти все эти \ r и \ n и заменить их на \ r и \ n.

Я не знаю, может ли \ r принадлежать какому-либо мудрому символу, поэтому, возможно, вам следует заменить только "\ r "/" \ n ", для этого вам может понадобиться preg_replace ().

1 голос
/ 15 сентября 2010

Теперь PHP получает это в двойных кавычках из базы данных

Что? Результат mysql_fetch_row или whatewer - это просто строка. Ничто не может быть истолковано иначе. \n просто остается \n. Только строка литералы , которую вы пишете в файле PHP в двойных кавычках, будет "интерпретирована" и затем сохранена как строка.

Нет ничего лучше строки в одинарных или двойных кавычках. В исходном коде PHP есть только строковые литералы с одинарными или двойными кавычками, из которых будут сделаны настоящие строки PHP.

Единственная проблема, с которой вы сейчас столкнулись, - это обработка / анализ данных RTF . (Предполагая, что данные были сохранены в столбце BLOB-объектов, чтобы не было сложностей с кодировкой символов.)

...