【问题标题】:Unwanted space between php and htmlphp和html之间不需要的空间
【发布时间】:2016-07-26 20:50:59
【问题描述】:

我有这个代码,问题是每个逗号前都有一个空格。

Name Lastname , (1990.) , Title ...

应该是

Name Lastname, (1990.), Title ...

我需要使用 echo 获取这种格式的数据。

ob_start();

...

<?php // DATE  ?>
<?php if(!empty($ref['godina_izdanja'])) :
echo ', (<span class="date">' . $ref['godina_izdanja'] . '</span>.)';
endif; ?>

<?php // TITLE?>
<?php if(!empty($ref['title'])) : 
echo ', <em><span class="title">' . $ref['title'] . '</span></em>';
endif; ?>

我可以做些什么来修复它但让代码可读吗?我知道我可以将所有内容连接在一起,但它会变得难以阅读和维护

【问题讨论】:

  • 可以是 ?>

标签: php wordpress ob-start


【解决方案1】:

这个:

endif; ?>
                            <----right here
<?php // TITLE?>

在 PHP 脚本中,不在 &lt;?php ... ?&gt; 标记内的 ANYTHING 将被视为输出。你那里有一个空行,所以你输出一个空行,它会被你的浏览器呈现为一个空格。

反复跳入/跳出php模式确实是零点:

<?php echo 'hi'; ?>
<?php echo 'mom'; ?>

只会让大量丑陋的代码读取/维护。进入 PHP 模式后,请保持 PHP 模式,尤其是当您只是要跳入/跳出时:

<?php
echo 'hi';
echo 'mom';
?>

【讨论】:

    【解决方案2】:

    Php 标签越少,混乱就越少。如果真的需要在中间使用html,进出php标签时尽量避免空格。

    <?php
    ob_start();
    
    ...
    
    // DATE 
    if(!empty($ref['godina_izdanja'])) :
    echo ', (<span class="date">' . $ref['godina_izdanja'] . '</span>.)';
    endif;
    
    // TITLE
    if(!empty($ref['title'])) : 
    echo ', <em><span class="title">' . $ref['title'] . '</span></em>';
    endif;
    
    ?>
    

    【讨论】:

      【解决方案3】:

      如果我是,我只会使用一个 PHP 块

      <?php
      
      // DATE
      if(!empty($ref['godina_izdanja'])) :
        echo ', (<span class="date">' . $ref['godina_izdanja'] . '</span>.)';
      endif;
      
      // TITLE
      if(!empty($ref['title'])) : 
        echo ', <em><span class="title">' . $ref['title'] . '</span></em>';
      endif;
      

      【讨论】: