我的PHP脚本中有语法错误?

时间:2011-05-26 15:06:17

标签: php

我正在处理一个项目,我需要将表格单元格中的文本转换为动态链接,并且在转义为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>"; 

6 个答案:

答案 0 :(得分:3)

我已经用你的代码确定了两个:

  1. 你是双重引用HTML,你试图回应
  2. 您正在使用乍一看难以调试的三元运算符
  3. 有一种方法能够以更好的方式编写代码,以便您可以立即看到出错的地方(或添加其他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变量。< / p>

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

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

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

你错过了一段时间。

答案 4 :(得分:0)

您缺少一些连接点,例如在第一行和第一行isset之间。

答案 5 :(得分:0)

您缺少连接句点是第1行的结尾,第2行是第3行