我的PHP脚本中有一个语法错误


I have a syntax error in my PHP script?

我正在处理一个项目,如果我需要将表单元格中的文本转换为动态链接,并且在转义为HTML时出错。

以下是我试图转换为链接的代码行。在我尝试将其作为链接之前,它非常完美。

echo "<td><a>" .  (isset($resultSetArray[$x]["assessment"]["owner1"]) ?
 ucwords(strtolower($resultSetArray[$x]["assessment"]["owner1"])) : '')
 . "</a></td>";

它从数据库中返回一个名称。我需要这个名字作为另一个页面的链接,在URL中有这个名字。

以下是我尝试过但没有成功的方法。我哪里错了?

echo "<td>" .  "<a href='"http://Company.com/secure/IndSearch?owner="
(isset($resultSetArray[$x]["assessment"]["owner1"]) ?
 ucwords(strtolower($resultSetArray[$x]["assessment"]["owner1"])) : '')"/" 
(isset($resultSetArray[$x]["assessment"]["owner1"]) ? 
ucwords(strtolower($resultSetArray[$x]["assessment"]["owner1"])) : '') . "</a></td>"; 

我用您的代码识别了两个:

  1. 您正在对试图回显的HTML进行双引号引用
  2. 您使用的是三元运算符,乍一看很难调试

有一种方法可以用更好的方式编写代码,这样你就可以立即看到你犯了错误的地方(或者添加额外的HTML标记/变量等)。

字符串引用语法称为HereDoc

$owner = '';
if(isset($resultSetArray[$x]["assessment"]["owner1"]))
{
    $owner = $resultSetArray[$x]["assessment"]["owner1"];
}
$str = <<<EOF
<td><a href="http://Company.com/secure/IndSearch?owner=$owner">$owner</a></td>
EOF;
echo $str;

正如您所看到的,您不必检查数组两次来确认条目的存在,也不必转义任何引号,这样您就可以安全地粘贴HTML而不必担心任何问题,还可以使用PHP变量。

我认为您的echo语句中缺少了一些连接点.。Esp.在第一次isset函数调用之前。

顺便说一句,你的代码需要认真的重构。通过将这些返回值保存在局部变量中,可以避免许多冗余调用。

在连接字符串时错过了一个点:

echo "<td>" .  "<a href='"http://Company.com/secure/IndSearch?owner="
(isset($resultSetArray[$x]["assessment"]["owner1"]) ?
ucwords(strtolower($resultSetArray[$x]["assessment"]["owner1"])) : '') . "/" 
                                                                  //   ^ missing one
....

ucwords(strtolower($resultSetArray[$x]["assessment"]["owner1"])) : '')"/"

ucwords(strtolower($resultSetArray[$x]["assessment"]["owner1"])) : '')."/"

你错过了一段时间。

您缺少一些串联点,例如在第一行和第一个isset之间。

您缺少第1行的末尾和第3行的两个连接周期