我发现每当我执行以下操作时:
echo '<a href="http://" title="bla">huzzah</a>';
我最终将以下内容呈现给浏览器:
<a href="http:///" title="bla">huzzah</a>
当我链接到带有扩展名的文件时,这尤其令人讨厌,因为它会破坏链接。
任何想法为什么会发生这种情况以及我该如何解决?
更新: 对于那些询问我的确切实施的人,在这里。在我的故障排除中,我尽可能地把它简化了,所以请不要介意我在哪里将纯文本连接到纯文本......
function print_it($item) {
echo '<div class="listItem clearfix">';
echo '<div class="info">';
echo '<span class="title">';
if(isset($item[6])) {
echo '<a href="http://" title="">' . 'me' . '</a>';
}
echo '</span>';
echo '</div></div>';
}
更新: 作为对 Matt Long 的回应,我粘贴了您的行,并且呈现相同的内容。
更新: 作为对 Fire Lancer 的回应,我重新尝试了最初的尝试,并将在下面向您展示。
echo substr($item[6],13) . '<br>';
echo '<a href="http://' . substr($item[6],13) . '" title="' . $item[0] . '">' . $item[0] . '</a>';
<span class="title">www.edu.gov.on.ca%2Feng%2Ftcu%2Fetlanding.html<br>
<a href="http://www.edu.gov.on.ca%2Feng%2Ftcu%2Fetlanding.html" title="Employment Ontario">Employment Ontario</a></span>
子字符串的原因是由于 URL 在其他地方通过 rawurlencode() 运行,并且链接到 http%3A%2F%2F 使页面认为它是本地/相对链接。
更新: 我粘贴了上面的回复而没有真正看它。因此,在查看源代码时 HTML 是正确的,但实际页面会在其后加上另一个斜杠来解释它。
解决方案: 这都是 rawlurlencode() 的结果。如果我一起解码或跳过编码,一切都会完美运行。关于 rawurlencode() 的一些东西使浏览器想要在其中添加一个斜杠。