我的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>\"; 
    

解决方法

我用您的代码确定了两个: 您正在用双引号引用要尝试回显的HTML 您正在使用三元运算符,乍一看很难调试 有一种以更好的方式编写代码的方法,因此您可以立即查看出错的地方(或添加其他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。在第一个“ 4”函数调用之前。 顺便说一句,您的代码需要认真的重构。通过将这些返回值保存在局部变量中,可以避免很多冗余调用。     ,当concat字符串时,您错过了一个点:
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\"])) : \'\').\"/\"
你错过了一段时间。     ,您缺少一些串联点,例如在第一行和第一个“ 4”之间。     ,您缺少第1行末尾和第3行末尾的重复句号