Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
强制PHP for循环的输出保持在同一行上_Php_Html_W3c - Fatal编程技术网

强制PHP for循环的输出保持在同一行上

强制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

我正在使用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 "+";
        }
}

?>&amp;ie=UTF8&amp;view=map&amp;f=q&amp;saddr=<?php

for ($loop = 0; $loop < $keywords_number; $loop += 1) {
    echo $keywords[$loop];
    if($loop!=$keywords_number_1) {
        echo ",+";
    }
}

?>&amp;<?php if($satellite) { ?>t=h&amp;<?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 "+";
    }
}

?>&amp;ie=UTF8&amp;view=map&amp;f=q&amp;saddr=<?php

for ($loop = 0; $loop < $keywords_number; $loop += 1) {
    echo trim(preg_replace('/\s+/', ' ', $keywords[$loop]));
    if($loop!=$keywords_number_1) {
        echo ",+";
    }
}

?>&amp;<?php if($satellite) { ?>t=h&amp;<?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, '', '&amp;');

// 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, '', '&amp;');

// 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>