我有这段代码
<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我知道一个原因来自我的编码风格,但对我而言,这提高了可读性。是否有任何解决方案可以协调我的风格与浏览器? ;)
答案 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来摆脱这些空间:
(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移动到单独的模板也更容易。这样的模板应该包含尽可能少的逻辑,并且不应该存在连接变量。 [/意见]