我从包含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
答案 0 :(得分:1)
现在PHP将其作为双引号获取 来自数据库
什么? mysql_fetch_row
或whatewer的结果只是一个字符串。没有任何东西以任何方式被重新诠释。 \n
只保留\n
。只有您在PHP文件中写入双引号的字符串 literals 才会被“解释”,然后存储为字符串。
没有像单引号或双引号的字符串。 PHP源代码中只有单引号或双引号的字符串文字,将从中生成实际的PHP字符串。
你现在唯一的问题是如何process/parse the RTF data。 (假设数据存储在blob列中,因此字符编码没有复杂性。)
答案 1 :(得分:1)
首先,你应该投入一些时间(或什么)逃避你的代码。
但是对于快速解决方案,请尝试使用stripslashes()函数:
$unsecaped = stripslashes( $database_data );
但我建议你试着找出逃避数据的内容。 这可能发生:
<强>更新强>
我不明白你的问题...... 你想保留所有这些反斜杠,但避免将\ r和\ n解释为回车和换行......
尝试使用str_replace查找所有\ r和\ n,并用\ r和\ n替换它们。
我不知道\ r是否属于任何明智的字符,所以也许你应该只替换“\ r \ n “/”\ n“,你可能需要preg_replace()。