验证错误:元素a上属性href的值不正确:查询中的非法字符:不是URL代码点

时间:2014-11-18 18:23:22

标签: php html-table

我正在提取数据库信息并将其显示在表格中,标题列的内容链接到动态页面。这一切都很完美,但在使用W3C Validator验证我的输出页面时,我收到以下错误,并且不知道如何修复它!

  

错误值newpage.php?url = DATABASE有关元素a的属性href的信息:查询中的非法字符:不是URL代码点。

然后突出显示a href">"的结束标记。

<?php 
    echo"<table>
    <tr>
        <th>Title</th>
        <th>A</th>
        <th>B</th>
        <th>C</th>
        <th>D</th>
    </tr>
    </table>";


        if (mysqli_num_rows($SQLresult) == 0 ) 
        { 
            echo 'No results found, please try again.';
        } 
        else 
        {   
            while ($row = mysqli_fetch_assoc($SQLresult)) 
            {
                echo "
                <table>
                <tr>
                    <td><a href='newpage.php?url=".$row['title']."'>".$row['title']."</td>
                    <td>".$row['A']."</td>
                    <td>".$row['B']."</td>
                    <td>".$row['C']."</td>
                    <td>".$row['D']."</td>
                </tr>
                </table>";
            }          
        }
?>

非常感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:2)

并非所有字符在网址中都是合法的。那些不合法的可以使用百分号和两个十六进制数字进行重新编码。 PHP的urlencode()函数可以做到这一点。在要成为链接的部分使用urlencode()

$url = urlencode($row['title']);
...
 <td><a href='newpage.php?url=".$url."'>".$row['title']."</td>

或者,你可以这样做:

<td><a href='newpage.php?url=".urlencode($row['title'])."'>".$row['title']."</td>

您可以在RFC2396中找到有关URL / URI中合法字符的更多信息:https://tools.ietf.org/html/rfc2396#section-2