foreach循环中的PHP preg_replace

时间:2016-12-27 16:05:02

标签: php arrays loops foreach

我试图在foreach循环中使用preg_replace。

我需要更换包含在'%'之间的所有关键字并使用后面的参考。

例如,在我的文字中我没有像%author %% title%这样的关键字 我需要替换关键字,使它们看起来像$ items-> author和$ items-> title

我尝试使用以下代码,但它只显示$ items-> author作为文本,而不是从数组中检索信息。

      foreach ($xml->book as $items) {
           echo preg_replace('/\%(.*?)\%/e', '$items->${1}', $content);
      }

对此有何想法?

1 个答案:

答案 0 :(得分:1)

您必须使用preg_replace_callback。您不能只将代码作为preg_replace函数中的第二个参数。

像这样:

$variables = $id, $visible;

此外,最好检查是否找到了匹配项以及foreach ($xml->book as $items) { echo preg_replace('/\%(.*?)\%/e', function ($matches) use ($items) { return $items->{$matches[1]}; }, $content); } 数组是否包含具有此名称的密钥。