【问题标题】:Quotation marks magically alter file path in PHP引号神奇地改变PHP中的文件路径
【发布时间】:2013-08-31 05:56:54
【问题描述】:

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

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

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

我刚刚发现我可以通过在引号和 php 之间放置一个空格来避免这个问题,这对于链接和其他内容很有效,但是这里发生了什么? PHP 什么时候能够读取 php 块之外的内容并对其做出反应?为什么会发生这种情况?

【问题讨论】:

标签: php wordpress


【解决方案1】:

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

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

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

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

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

【讨论】:

    【解决方案2】:

    好吧,我是个傻瓜。有一个插件,叫做“绝对相对链接”,它正在重新格式化页面。尽管如此,它的运作方式还是很奇怪。它似乎在寻找一个引号,后面紧跟任何类似 URL 的内容并重新格式化它。但即使是一个空格也足以阻止它。而且我没有意识到 PHP 可以在其自身之外的页面上读取内容。经验教训。

    【讨论】:

      猜你喜欢
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 2011-09-22
      • 2015-07-31
      • 1970-01-01
      • 2012-03-27
      • 2018-10-08
      • 1970-01-01
      相关资源
      最近更新 更多