强制PHP for循环的输出保持在同一行上
我正在使用Joomla作为我的网站的CMS,当在我的页面上嵌入地图时,我在使我的网站完全符合W3C标准方面遇到了一些问题。我用来嵌入地图的模块使用这段代码来嵌入地图强制PHP for循环的输出保持在同一行上,php,html,w3c,Php,Html,W3c,我正在使用Joomla作为我的网站的CMS,当在我的页面上嵌入地图时,我在使我的网站完全符合W3C标准方面遇到了一些问题。我用来嵌入地图的模块使用这段代码来嵌入地图 <iframe height="<?php echo $module_height; ?>" style="border:<?php echo $border; ?>; width:<?php echo $module_width.$module_width
<iframe height="<?php echo $module_height; ?>"
style="border:<?php echo $border; ?>;
width:<?php echo $module_width.$module_width_unit; ?>"
src="http://maps.google.com/maps?q=<?php
for ($loop = 0; $loop < $keywords_number; $loop += 1) {
echo $keywords[$loop];
if($loop!=$keywords_number_1) {
echo "+";
}
}
?>&ie=UTF8&view=map&f=q&saddr=<?php
for ($loop = 0; $loop < $keywords_number; $loop += 1) {
echo $keywords[$loop];
if($loop!=$keywords_number_1) {
echo ",+";
}
}
?>&<?php if($satellite) { ?>t=h&<?php } ?>output=embed"></iframe>
尝试用一个简单的空格替换您放入src url的变量中的所有空格字符:
<iframe height="<?php echo $module_height; ?>" style="border:<?php echo $border; ?>; width:<?php echo $module_width.$module_width_unit; ?>" src="http://maps.google.com/maps?q=<?php
for ($loop = 0; $loop < $keywords_number; $loop += 1) {
echo $keywords[$loop];
if($loop!=$keywords_number_1) {
echo "+";
}
}
?>&ie=UTF8&view=map&f=q&saddr=<?php
for ($loop = 0; $loop < $keywords_number; $loop += 1) {
echo trim(preg_replace('/\s+/', ' ', $keywords[$loop]));
if($loop!=$keywords_number_1) {
echo ",+";
}
}
?>&<?php if($satellite) { ?>t=h&<?php } ?>output=embed"></iframe>
一些建议:
- 别再写这个意大利面条代码了
- 考虑将循环替换为
内爆()
调用
- 考虑将查询参数构建为数据结构,然后一次性转换为查询字符串
- 正确地对参数字符串进行URL编码
我可能会这样编写代码:
<?php
$google_map_base_url = 'http://maps.google.com/maps?';
// prepare parameters
$parameters = array();
$parameters['q'] = implode('+', $keywords);
$parameters['ie'] = 'UTF8';
$parameters['view'] = 'map';
$parameters['f'] = 'q';
$parameters['saddr'] = implode(',+', $keywords);
if($satellite) {
$parameters['t'] = 'h';
}
$parameters['output'] = 'embed';
// build url-encoded query string
$query_string = http_build_query($parameters, '', '&');
// build final url
$google_map_url = $google_map_base_url . $query_string;
// now output to browser
?>
<iframe height="<?php echo $module_height; ?>" style="border:<?php echo $border; ?>; width:<?php echo $module_width.$module_width_unit; ?>" src="<?php echo $google_map_url; ?>"></iframe>
首先,为什么不在开始将任何内容输出到HTML之前用PHP构建整个参数字符串呢。这至少会清理并帮助防止由于当前编写代码的意大利面代码性质而产生的虚假空白。停止使用复杂的循环来执行加入的工作。按照php
标记的放置方式,没有明显的理由让您获得这些换行符。可能是您在这些循环中输出的某些值的一部分?然后你应该先修剪多余的空白。(无需为此返回到循环,array_map
有帮助。)的可能重复
<?php
$google_map_base_url = 'http://maps.google.com/maps?';
// prepare parameters
$parameters = array();
$parameters['q'] = implode('+', $keywords);
$parameters['ie'] = 'UTF8';
$parameters['view'] = 'map';
$parameters['f'] = 'q';
$parameters['saddr'] = implode(',+', $keywords);
if($satellite) {
$parameters['t'] = 'h';
}
$parameters['output'] = 'embed';
// build url-encoded query string
$query_string = http_build_query($parameters, '', '&');
// build final url
$google_map_url = $google_map_base_url . $query_string;
// now output to browser
?>
<iframe height="<?php echo $module_height; ?>" style="border:<?php echo $border; ?>; width:<?php echo $module_width.$module_width_unit; ?>" src="<?php echo $google_map_url; ?>"></iframe>