我正在处理一个项目,如果我需要将表单元格中的文本转换为动态链接,并且在转义为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.在第一次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行的两个连接周期