从字符串中删除并添加字符

时间:2014-07-17 01:14:44

标签: php html regex preg-replace str-replace

我想用新行代替\n

这是数据库的结果:

<!DOCTYPE html>\n<html>\n<body>\n<div>\n<label class=\"s20 c03\">Label</label>\n</div>\n</body>\n</html>

我希望字符串在美学上令人愉悦,例如:

<!DOCTYPE html>
<html>
<body>
<div>
<label class="s20 c03">Label</label>
</div>
</body>
</html>

3 个答案:

答案 0 :(得分:0)

听起来\n被烧成了字符串。要用实际的换行符替换它们,请使用:

$replaced = preg_replace('/\\\\n/', '\n', $yourstring);

答案 1 :(得分:0)

你绝对应该首先找到双重转义的来源。

要撤消您确切的数据问题,不过有stripcslashes()

  • 用换行符替换文字\n
  • 并将\"变为简单的双引号。

它还撤消\r和八进制\000或十六进制\x00转义,或者(很可能是您的数据库也包含这些)双反斜杠\\重新转换为奇异的。

答案 2 :(得分:0)

@ahmadalbayati我认为是在正确的轨道上。

漂亮的标记

如果您只是希望数据库返回的字符串在返回页面的标记中看起来非常 (即通过浏览器中的“查看页面源”),只需将其回显到您想要的位置即可标记...

<?php
$dbResponse = "<!DOCTYPE html>\n<html>\n<body>\n<div>\n<label class=\"s20 c03\">Label</label>\n</div>\n</body>\n</html>";
echo $dbResponse;
?>

...产生以下标记:

<!DOCTYPE html>
<html>
<body>
<div>
<label class="s20 c03">Label</label>
</div>
</body>
</html>

漂亮的渲染页面(和标记)

如果要在呈现返回的页面时显示数据库返回的字符串,可以将str_replacehtmlspecialchars函数结合使用,如下所示......

<?php
$dbResponse = "<!DOCTYPE html>\n<html>\n<body>\n<div>\n<label class=\"s20 c03\">Label</label>\n</div>\n</body>\n</html>";
echo str_replace("\n", "<br />\n", htmlspecialchars($dbResponse));
?>

...,产生以下显示页面......

  

&lt;!DOCTYPE html&gt;
  &LT; HTML&GT;
  &LT;身体GT;
  &LT; DIV&GT;
  &lt; label class =&#34; s20 c03&#34;&gt;标签&lt; / label&gt;
  &LT; / DIV&GT;
  &LT; /体&GT;
  &LT; / HTML&GT;

......以及后面的标记:

&lt;!DOCTYPE html&gt;<br />
&lt;html&gt;<br />
&lt;body&gt;<br />
&lt;div&gt;<br />
&lt;label class=&quot;s20 c03&quot;&gt;Label&lt;/label&gt;<br />
&lt;/div&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;