我想用新的一行替换'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>
听起来像'n
被烧进了字符串。要用实际的换行符替换它们,使用以下命令:
$replaced = preg_replace('/''''n/', ''n', $yourstring);
一定要先找到双转义的来源。
撤销你的非常确切的数据问题,有 stripcslashes()
然而。
- 用换行符替换文字
'n
。 - 和
'"
成双引号。
它还撤销'r
和八进制'000
或十六进制'x00
转义,或者(很可能您的数据库也包含这些)将双反斜杠''
还原为单个转义。
我认为@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_replace
和htmlspecialchars
函数,如下所示…
<?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>
& lt; html>
& lt; body>
& lt;div>
& lt;/div>
& lt;/body>
& lt;/html>
…后面是以下标记:
<!DOCTYPE html><br />
<html><br />
<body><br />
<div><br />
<label class="s20 c03">Label</label><br />
</div><br />
</body><br />
</html>