php - 如何从字符串输出中删除回车符?

标签 php javascript wordpress google-maps

我将 wordpress 用作 CMS,并尝试允许输入用户字段以填充 Google map 脚本中的信息窗口。我正在使用它来选择 ID 并从自定义字段中提取内容。

它工作正常,除非自定义字段中有任何破坏脚本的 html。
我查看了 htmlspcialchar 和 htmlentities,但我不想删除所有内容,而是希望将其转义,以便它仍然有效并且 html 完好无损。有什么建议么?我是 PHP 的新手,非常感谢任何指点。

一段时间后,我仍然找不到很好的解决方案。 TheDeadMedic 建议我使用 esc_js

但是它打印了所有实际的 html 代码而不是渲染它。

感谢 nickfs,因为该解决方案稍微好一些,但如果输出中有任何回车符,脚本仍然会中断,这对于 CMS 来说不是很好。

我尝试的其他方法是使用 trim 函数。这就是我现在所处的位置,只要输出中没有\r 即可。 $snip 字符串,mapExcerpt 字段是返回的来源:

<?php $post_id = 207; // Wordpress Post ID
$my_post = get_post($post_id);
$mapTitle  = $my_post->post_title;
$mapIMG = get_post_meta($post_id, 'mapImage', true);
$snip = get_post_meta($post_id, 'mapExcerpt', true);
$lat = get_post_meta($post_id, 'lat', true);
$long = get_post_meta($post_id, 'long', true);
$pass_to = '<div class="span-8"><div class="mapTitle">'.$mapTitle.'</div><div class="mapContent">'.$snip.'</div></div>';
$trimmed = trim($pass_to, " \r.");
?>
var point = new GLatLng('<?php echo $lat; $lat; ?>','<?php echo $long; $long; ?>');
var marker = createMarker(point,"<?php echo $mapTitle; $mapTitle; ?>", '<?php echo addslashes($trimmed); ?>');
map.addOverlay(marker);

还有关于如何实现这一目标的其他想法吗?

最佳答案

我不完全理解你的确切问题,但你的问题标题的答案很简单:

$snip = str_replace('.', '', $snip); // remove dots
$snip = str_replace(' ', '', $snip); // remove spaces
$snip = str_replace("\t", '', $snip); // remove tabs
$snip = str_replace("\n", '', $snip); // remove new lines
$snip = str_replace("\r", '', $snip); // remove carriage returns

或多合一解决方案:

$snip = str_replace(array('.', ' ', "\n", "\t", "\r"), '', $snip);

你也可以使用正则表达式:

$snip = preg_replace('~[[:cntrl:]]~', '', $snip); // remove all control chars
$snip = preg_replace('~[.[:cntrl:]]~', '', $snip); // above + dots
$snip = preg_replace('~[.[:cntrl:][:space:]]~', '', $snip); // above + spaces

您仍然需要使用 addslashes() 在 Javascript 中输出 $snip

关于php - 如何从字符串输出中删除回车符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3059091/

相关文章:

php - 如何在 iOS 中向 PHP 发送 GEt 请求

php - json_decode 返回 NULL , UTF-8 BOM

javascript - 为什么我不能在 Phantomjs 中直接使用 webPage.create() 的结果?

javascript - 使用 Javascript 将 HTML 中的 Json 转换为 unicode

php - 将自定义产品排序设置为默认 Woocommerce 排序选项

php - 如何只打印这个echo的ID?

php - 向数据库添加新值,没有错误但不输入

javascript - 从没有弹出窗口拦截器的预签名 URL 下载 S3 文件

html - WooCommerce:显示没有描述的产品的简码?

javascript - 将数据从一个表单字段传递到另一个表单字段