首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在PHP中删除字符串中的所有换行符和转义字符?

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

Stack Overflow用户
提问于 2011-10-04 03:05:07
回答 2查看 2.9K关注 0票数 2

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

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

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-04 03:17:27

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

以下是我最初的回应:

代码语言:javascript
运行
复制
<?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;
?>

使用正则表达式做同样的事情:

代码语言:javascript
运行
复制
<?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\\'处结束。

票数 4
EN

Stack Overflow用户

发布于 2011-10-04 03:35:26

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

代码语言:javascript
运行
复制
<script type="text/javascript">
    var description = <?php echo json_encode($description) ?>;
</script>
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7639459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档