【问题标题】:PHP - SimpleXML Using Variables Created From Objects Made in ForEach LoopPHP - SimpleXML 使用从 ForEach 循环中创建的对象创建的变量
【发布时间】:2012-08-04 23:33:45
【问题描述】:

我正在尝试为我的新网站开发导航面包屑系统。 我的页面使用 SimpleXML 从 xml 数据库中检索它的文件名和页面信息。

我在最后一个代码块中收到 preg_replace(); 函数的 php 错误:解析错误:语法错误,/home/content/85/8762385/html 中的意外 T_STRING /joelsdesign/movies/we-are-hiring.php 第 21 行

在文档的头部,有 $dom = simplexml_load_file('pages.xml');

这是我的 xml 文件的内容:http://joelsdesign.info/movies/scores.xml

我的导航菜单是“必需的”,并且 require 语句存储在我的名为 $nav

的变量中
foreach ($dom->page as $page) {
    $title = $page->title;
    $file = $page->file;
    $nav = file_get_contents('require/nav.php');
    $nav = preg_replace("<li><a href=\"".$file."\">".$title."</a></li>", "<li class="current"><a href=\"".$file."\">".$title."</a></li>", $nav);
}

【问题讨论】:

  • 出于品味,我喜欢对我的问题采取迂腐的态度,并且总是研究我收到的错误消息。大多数情况下,这导致我发现显示这些错误的主要 4-5 个原因。因此,我什至在发布之前就回答了自己的大部分问题。

标签: php variables object foreach simplexml


【解决方案1】:

current 周围的引号没有转义:

$nav = preg_replace("<li><a href=\"".$file."\">".$title."</a></li>", "<li class=\"current\"><a href=\"".$file."\">".$title."</a></li>", $nav);

此外,您不应该在不使用正则表达式的情况下使用 preg_replace。您应该使用 str_replace。

如果您确实需要 preg_replace,您将编写一个正则表达式 - 正则表达式 - 需要以分隔符开头,最常见的是正斜杠 /。因此,第二个错误是由 &lt; 不是正则表达式的已知分隔符这一事实造成的。

【讨论】:

  • 有效,但显示二级错误:'警告:preg_replace() [function.preg-replace]:未知修饰符'
  • 我已经用关于二级错误的信息更新了我的答案。请在问题中写下您的评论内容,以便其他人可以看到为什么我的答案需要包含这些规范。
猜你喜欢
  • 2015-07-01
  • 1970-01-01
  • 2013-06-10
  • 2018-06-17
  • 2019-10-14
  • 2021-12-02
  • 1970-01-01
  • 2020-01-16
  • 1970-01-01
相关资源
最近更新 更多