【发布时间】:2011-03-04 19:09:32
【问题描述】:
我将 wordpress 用作 CMS,并尝试允许输入用户字段以填充 Google 地图脚本中的信息窗口。我正在使用它来选择 id 并从自定义字段中提取内容。
除非自定义字段中有任何破坏脚本的 html,否则它可以正常工作。
我查看了 htmlspcialchar 和 htmlentities,但我不想把所有东西都去掉,我想让它转义,这样它仍然可以工作并且 html 是完整的。有什么建议?我对 PHP 很陌生,非常感谢任何指针。
一段时间后,我仍然无法找到一个很好的解决方案。 TheDeadMedic 建议我使用 esc_js
但它打印了所有实际的 html 代码而不是渲染它。
感谢 nickfs,因为该解决方案稍微好一些,但如果输出中有任何回车符,脚本仍然会中断,这对于 CMS 来说并不是那么好。
我尝试过的其他方法是使用修剪功能。只要输出中没有 \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);
关于如何实现这一点还有其他想法吗?
【问题讨论】:
-
自定义字段为什么会有HTML?
-
@Tom 控制布局、链接等...
-
为什么不只是设置一个名为“位置”的自定义字段,他们只能输入纬度/经度并为链接、布局等定义一系列其他自定义字段?
-
我确实有,我只是没有把那部分放在这里,因为这不是问题。此自定义字段包含 html 的原因是因为它出现在为标记点弹出的信息气泡中。我有另一个自定义字段,仅适用于有效的样式图像,但是带有文本的这个字段有点问题。只要没有 \r 它就可以很好地工作,但是任何回车都会杀死它。
-
我更新了我的问题以显示更多代码。希望现在更有意义
标签: php javascript wordpress google-maps