2008-10-01 65 views
1

我發現,任何時候我做到以下幾點:回聲一個鏈接,得到一個尾隨斜線?

echo '<a href="http://" title="bla">huzzah</a>'; 

我結束了以下被呈現給瀏覽器:

<a href="http:///" title="bla">huzzah</a> 

這是特別煩,當我鏈接到文件有一個擴展名,因爲它打破了鏈接。

任何想法,爲什麼發生這種情況,我該如何解決它?

更新: 對於那些詢問我的確切實施,這裏是。在我的疑難解答我已經簡單化下來,就像我可以,所以請不要介意,我Concat的明文明文...

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>'; 
} 

更新: 針對馬特龍,我粘貼在你的線上,並且呈現相同的效果。

更新: 對於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> 

的原因substr'ing是由於URL正通過rawurlencode運行()在其他地方,並鏈接到http%3A%2F%2F使得頁面認爲這是一個本地/相對鏈接。

更新: 我粘貼沒有真正看它上面的響應。因此,在查看源代碼時,HTML是正確的,但實際頁面在其之後以另一個結尾的斜槓解釋它。

解決方案: 這是rawlurlencode()的全部結果。如果我解碼,或一起跳過編碼,一切都運作完美。關於rawurlencode()的一些東西讓瀏覽器想要在那裏貼一個斜線。

+0

爲什麼這很重要?無論如何,http://是無效的鏈接。放入一個真正的鏈接,忘掉它。 – davr 2008-10-01 15:23:00

回答

2

Firefox,特別是以它看到它的方式向你展示html源代碼,這很少是你發送它的方式。顯然你的鏈接或它的上下文是讓瀏覽器解釋一個尾部的斜線。

我不知道這是否是URL編碼的副作用。如果你rawurldecode它會有幫助。如果有部分url需要保持編碼,您可以搜索斜槓並將其放回。

3

我從來沒有這樣做,你是多麼地迴應鏈接?以下所有應該工作。

echo '<a href="http://someothersite.com">Link</a>'; 
echo '<a href="anotherpage.php">Some page</a>'; 
echo '<a href="../pageinparentdir.php">Another page</a>'; 
etc 

編輯,因爲您添加了信息。

你不能僅僅將http://作爲href,甚至直接將該鏈接輸入到html頁面中也會產生該效果。 如:
HTML:

<a href="http://" title="bla">huzzah</a> 

鏈接(在FF3):

http:/// 
1

誤差必須在其他地方。 echo逐字寫入字符串。任何部分都不進行後期處理。因此額外的斜線添加到代碼的其他地方(在將字符串傳遞到echo之前)。

0

如果您使用雙引號並使用類似這樣的內部雙引號,您會得到相同的結果嗎?

echo "<a href=\"http://\" title=\"bla\">huzzah</a>"; 
0

如果我把echo命令在我的PHP代碼,它輸出的「http://」預期(你可以看到,在生成的輸出源),但是當後來我將鼠標放在鏈接在生成的頁面(使用IE7)中,它顯示http:///

我的猜測是,這是瀏覽器的行爲,因爲不能有一個沒有主機名或IP地址的http://鏈接(你不能只訪問協議)。

0

正如一些人指出的,'http://'不是一個有效的鏈接,所以你的瀏覽器在最後添加額外的斜線。要查看了它,嘗試一個猞猁突降http://yourdomain/yourfile.php(如果你足夠幸運,有一個Linux)從你的盒子或遠程登錄到服務器的80端口,並鍵入此:

GET /path/file.php HTTP/1.0 

,並查看結果。

-1

你看過你的PHP配置設置嗎?這可能是magic_quotes_gpc決定爲你轉義的東西(我曾多次被該設置咬過,尤其是在使用AJAX/JSON流量時)。嘗試確保它關閉並再次回顯(您可能需要編輯您的php.ini文件,或將php_flag magic_quotes_gpc off添加到您工作的目錄中的.htaccess文件中,具體取決於您的環境)。