如何从PHP字符串中删除所有换行符和转义字符?

How do I remove all newlines and also escape characters from a string in PHP?

本文关键字:换行符 转义字符 删除 PHP 字符串      更新时间:2023-09-26

对于我在PHP中构建的YouTube web应用程序,我有一个简单的视频播放器,嵌入一个<iframe>,然后一个<div>与当前加载的视频(描述,id,标题等)的信息。

A <ul>包含一个视频列表,使用PHP gData API从YouTube获取,每个<li>包含一个链接,激活JavaScript将视频播放器更改为正确的视频,并更新页面上的视频信息。

这里是问题:gData返回多行,非转义序列的视频描述,这在JavaScript中不起作用。我应该如何删除换行符并用<br>替换它们(注意它们不是像'n那样的换行符,它们是实际的换行符和换行符)。

我还必须转义在JavaScript字符串中不起作用的其他东西,例如撇号字符'。最好的方法是什么?

不要试图自己逃避东西。只需使用json_encode,它将为您处理所有这些细节:

<script type="text/javascript">
    var description = <?php echo json_encode($description) ?>;
</script>

Marc B给出了最好的答案。使用json_encode: http://php.net/manual/en/function.json-encode.php去吧,给他的答案投票。

以下是我的原始回复:

<?php
$data = "Hello, 'world'.'nHow are you doing?'n'"Good?'"'n";
$data = str_replace("'n", '<br>', $data);
$data = str_replace('"', ''"', $data);
$data = str_replace("'", "''", $data);
echo $data;
?>

相同的东西使用regex:

<?php
$data = "Hello, 'world'.'nHow are you doing?'n'"Good?'"'n";
$data = preg_replace("/'n/", '<br>', $data);
$data = preg_replace("/'"|'/", ''"', $data);
echo $data;
?>

给出了这些例子,你真的不需要转义单引号和双引号。在JavaScript中,可以使用双引号字符串,也可以使用单引号字符串。因此,使用一个并转义另一个。

您可能还需要转义反斜杠(将'替换为'')以确保一些有趣的YouTube上传者不会试图通过在视频描述中放置foo''bar来破坏您的PHP脚本。现在,如果你不转义反斜杠,这会破坏你的脚本,因为JavaScript字符串替换后现在看起来像:'foo'''bar',这是一个语法错误,因为字符串在'foo'''结束。