我正在使用Joomla作为我网站的CMS,而且在我的网页上嵌入地图时,我的网站完全符合W3C标准时遇到了一些问题。我用来嵌入地图的模块使用这段代码嵌入地图。
<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>
不幸的是,这导致了这样的回报,
<iframe height="300" style="border:none; width:100%" src="http://maps.google.com/maps?q=STREET ADDRESS
CITY,+PROVINCE+POSTAL+CODE
&ie=UTF8&view=map&f=q&saddr=STREET ADDRESS
CITY,,+PROVINCE,+POSTAL,+CODE
&output=embed"></iframe>
这些地图在网站上显示得非常好,但我收到了这个错误,
元素iframe上属性src的值不正确:找到Tab,新行或回车符。
我希望这个网站完全符合W3C标准,我认为我需要输出中的所有文本都在一行上。
有什么方法可以强制for循环在同一行上打印,或者将两个循环的输出连接成一个字符串以保持在同一行?
谢谢!
答案 0 :(得分:1)
尝试使用简单的空格替换放在src网址中的变量中的所有空白字符:
<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>
答案 1 :(得分:1)
一些建议:
implode()
来电替换循环。我可能会写这样的代码:
<?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>