我制作了这个PHP脚本,但是Dreamweaver指出(作为编写的代码的解析)这个字符串是不正确的。
无论如何它完美无缺,但也许我错了些什么:
for($i=1; $i<=$npagine; $i++) {
?> <a <? if($i==$index) { ?> class="paginas" <? } else { ?> class="pagine" <? } ?> href="index.php?<?=$splitter_zone?>&index=<?=$i?>"><?=$i?></a> <?
}
有什么想法吗?
答案 0 :(得分:3)
代码看起来还不错。但是,您的代码非常难以阅读 - 我几乎可以理解Dreamweaver对它的窒息:)
这是一个更简单的建议:
for($i=1; $i<=$npagine; $i++)
{
$class = ($i == $index ? "paginas" : "pagine");
echo "<a class='$class' href='index.php?$splitter_zone&index=$i'>$i</a>";
}
答案 1 :(得分:1)
不确定,但是您正在使用php的短标签。它并不像所用的那样在所有安装上得到支持。必须打开short_open_tag才能使用短标签。
<?php
// bla
?>
not
<?
//bla
?>
答案 2 :(得分:1)
首先出现的问题是你应该使用<?php
来打开PHP标签,而不仅仅是<?
。简短表单已被弃用,可能无法始终正常运行。
此外,不推荐使用打印输出的短格式<?=
。您应该使用<?php print
或<?php echo
。 (是的,我知道它会使代码更长......不要抱怨它!; - ))
这可能是破坏你的计划的原因。 PHP的新安装将阻塞短格式PHP标记。就这么简单。
但是,虽然我在这里......你遇到的第二个问题是PHP与HTML之间的混乱。你应该清理你的代码,这样你就不必拥有这么多的PHP。这样做使得几乎不可能用HTML跟踪标记和PHP中的大括号。几乎可以肯定会导致错误,并且当你回到它两年后修复错误时很难阅读。
要解决这个问题,我建议您更喜欢编写代码:
<?php
for($i=1; $i<=$npagine; $i++) {
if($i==$index) {$class='paginas';} else {$class='pagine';}
.... //output your HTML here, without the if() condition embedded in it.
}
?>
您可以使用三元运算符进一步简化。
切换到长格式PHP标记<?php
会以这种方式主动阻止PHP和HTML之间的过度切换,因此您可能希望借此机会以更易读的形式重新编写代码。
在这种情况下,使用print
或echo
输出整个HTML标记没有任何问题,而是切换到HTML模式进行打印。
所以你最终可能得到这样的代码:
<?php
for($i=1; $i<=$npagine; $i++) {
$class = ($index == $i) ? 'paginas' : 'pagine';
print "<a class='{$class}' href='index.php?{$splitter_zone}&index={$i}>{$i}</a>";
}
?>
更简单易读,我相信你会同意的。
我要说的最后一点是,我总是建议避免使用像$i
这样的单字符变量名。尝试使用更具描述性的内容来使用它。它似乎无害,但想象一下,试图在$i
的大型程序中查找错误。你会得到很多虚假的命中。
答案 3 :(得分:0)
PHP和HTML很好( fsvo。“很好”;首先,请关闭smart-tags
!)。 Dreamweaver不知道如何正确突出显示它。
答案 4 :(得分:0)
for($i=1; $i<=$npagine; $i++) {
$class=$i==$index?"paginas":"pagine";
echo"<a class='{$class}' href='index.php?{$splitter_zone}&index={$i}>{$i}</a>\r\n";
}