引号在PHP中神奇地改变了文件路径

时间:2013-08-30 03:18:07

标签: php wordpress

在“循环”echo get_permalink()the_permalink()内部工作正常并产生类似http://www.example.com/path-to-post的内容,直到我将这些调用放在HTML中的引号内如此。

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

此时它神奇地变成了网站相对网址,就像“/ path-to-post”一样。

我只是想通过在引号和php之间加一个空格来避免这个问题,这对链接和东西很好用,但是这里发生了什么?从什么时候开始PHP才能读取php块之外的内容并做出反应呢?为什么会发生这种情况?

2 个答案:

答案 0 :(得分:2)

问:从什么时候PHP能够读取php块之外的内容并对它作出反应?

答:很长一段时间(想想PHP 4)它能够将输出的文本捕获到缓冲区中,然后像字符串一样读取缓冲区。见ob_start()。从技术上讲,函数可以检查缓冲区中的最后一个字符是否为",并且在这种情况下表现不同。

问:为什么会发生这种情况?

答:您确定the_permalink()功能正在发生这种情况吗?可能有一个插件试图确保绝对URL不会在<a href="<?php the_permalink() ?>">上下文中使用。你安装了哪些插件?也许这甚至是默认行为,我只是在wp-includes / link-template.php中对the_permalink()的快速扫描中看不到它。

您可以尝试其他一些方法来解决它。我要尝试的第一件事是使用&quot;而不是文字"

答案 1 :(得分:0)

嗯,我是个笨蛋。有一个名为“绝对相对链接”的插件,它正在重新格式化页面。仍然,它的运作方式很奇怪。它似乎寻找一个引号,后面紧跟任何类似URL的内容并重新格式化。但即便是一个空间也足以阻止它。我没有意识到PHP可以在页面外读取内容。经验教训。