单引号和双引号中的特殊字符

时间:2010-09-15 12:54:20

标签: php string rtf converter

我从包含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 个答案:

答案 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 );

但我建议你试着找出逃避数据的内容。 这可能发生:

  • 在将数据插入数据库之前。这通常是由PHP指令magic_quotes_gpc。
  • 引起的
  • 从数据库中检索数据时。

<强>更新

我不明白你的问题...... 你想保留所有这些反斜杠,但避免将\ r和\ n解释为回车和换行......

尝试使用str_replace查找所有\ r和\ n,并用\ r和\ n替换它们。

我不知道\ r是否属于任何明智的字符,所以也许你应该只替换“\ r \ n “/”\ n“,你可能需要preg_replace()。