2013-08-30 25 views
1

內部「環路」 echo get_permalink()the_permalink()做工精細文件的路徑和生成類似http://www.example.com/path-to-post直到我把這些調用引號內的HTML像這樣。引號神奇地改變PHP

<p> 
    This is normal HTML! 
    "<?php the_permalink()?>" 
</p> 

在這一點上,它神奇地成爲一個網站的相對網址,就像「/路徑到郵政」。

我剛纔發現,我可以通過在引號和php之間加一個空格來避免這個問題,這對鏈接和東西來說工作正常,但是這裏發生了什麼?從什麼時候PHP能夠讀取php塊以外的內容並對其作出反應?爲什麼這會發生呢?

+0

函數the_permalink()是做什麼的? – roninblade

+0

@roninblade http://codex.wordpress.org/Function_Reference/the_permalink – Phil

+1

這是不可能的,你說什麼是真實的還有一些其他信息,除了你所描述的,它會很高興聽到壽 – Davit

回答

2

問:從什麼時候PHP能夠讀取php塊以外的內容並對其作出反應?

答:很長一段時間(想想PHP 4)它已經能夠將輸出的文本捕獲到緩衝區中,然後像字符串一樣讀取該緩衝區。見ob_start()。從技術上講,函數可以檢查緩衝區中的最後一個字符是否爲",並且在該情況下行爲不同。

問:爲什麼會發生這種情況呢?

答:你確定這是the_permalink()函數嗎?可能有一個插件試圖確保絕對URL不會在<a href="<?php the_permalink() ?>">上下文中使用。你安裝了哪些插件?也許這就是默認行爲,我只是在wp-includes/link-template.php的the_permalink()快速掃描中看不到它。

你可以嘗試一些其他方法來解決它。我會嘗試的第一件事是使用&quot;而不是文字"

0

嗯,我是個傻瓜。有一個插件,稱爲「絕對的相對鏈接」不下,這是重新格式化頁面。仍然,它的運作方式很奇怪。它似乎尋找一個引號,緊跟其後的是類似於URL的任何內容並重新格式化它。但即使是一個空間也足以阻止它。而且我沒有意識到PHP可以在頁面之外讀取內容。學過的知識。