HTML禁用输入我的代码

时间:2015-05-30 17:48:00

标签: php html

我有这段代码

<a href="
        ?page=<?php echo $_GET['page'] ?>
        &tab=<?php echo $_GET['tab'] ?>
        &subtab=list"                                
Nazwa</a>

Chrome将以上代码呈现为:

                            ?page=nurk-edycja-tresci-home                                &tab=artykuly                                &subtab=list

有很多空格:C我知道一个原因来自我的编码风格,但对我而言,这提高了可读性。是否有任何解决方案可以协调我的风格与浏览器? ;)

2 个答案:

答案 0 :(得分:3)

保持白色空间服务器端

看起来您的HTML语法无效,您错过了> 当PHP被预处理时,它不会返回代码中的任何白帽,所以你应该是好的:

<a href="<?php
        echo '?page' . $_GET['page'];
        echo '&tab'  . $_GET['tab'];
        echo '&subtab=list";
?>">Nazwa</a>

您也可以将空格放在<?php ?>中,以便服务器处理它然后将其返回给客户端

<a href="<?php
    ?>?page=<?=$_GET['page'] ?><?php
    ?>&tab=<?=$_GET['tab'] ?><?php
    ?>&subtab=list"
>Nazwa</a>

您也可以将<?php echo替换为<?=

我该怎么做

<a href="<?= '?page=', $_GET['page'], '&tab', $_GET['tab'], '&subtab=list' ?>">

这种语法非常易读,您也可以使用新行:

<a href="<?=
  '?page=', $_GET['page'],
  '&tab', $_GET['tab'],
  '&subtab=list' 
?>">

的JavaScript?

如果你现在真的喜欢你的代码,你可以使用JavaScript来摆脱这些空间:

(function () {
    window.onload = function () {
        var elems = document.getElementsByTagName('a'),
            i     = 0;
        for (; i < elems.length; i += 1) {
            elems[i].href = (elems[i].href || '').replace(/\s/g, '');
        }
    }
}());

更短:

window.onload = function () {  Array.prototype.forEach.call(document.getElementsByTagName('a'), function (t) {  t.href = (t.href || '').replace(/\s/g, '')  })  }

ECMAScript2015(和谐):

window.onload = () => Array.from(document.querySelectorAll('a[href]')).map(t => (t.href = a.href.replace(/\s/g, ''));

答案 1 :(得分:1)

可以通过移动PHP关闭标记(以及开头的引用)来解决它,虽然它看起来仍然不是很好:

<a href=
        "?page=<?php echo $_GET['page'] 
        ?>&tab=<?php echo $_GET['tab'] 
        ?>&subtab=list">                                
Nazwa</a>

但就个人而言,我会选择更早地构建网址,因此您只需在HTML中输出一个小变量:

<?php

// I know you can use array items in strings too, but I like to split it up.
$page = $_GET['page'];
$tab = $_GET['tab'];
$url = "?page=$page&tab=$tab&subtab=list";

?>

<a href="<?=$url?>">
  Nazwa
</a>

[意见]我认为最后一种方式更好。你只需输出一个简单的变量,它就是在其他地方构造的。这样,将HTML移动到单独的模板也更容易。这样的模板应该包含尽可能少的逻辑,并且不应该存在连接变量。 [/意见]