我试图在foreach循环中使用preg_replace。
我需要更换包含在'%'之间的所有关键字并使用后面的参考。
例如,在我的文字中我没有像%author %% title%这样的关键字 我需要替换关键字,使它们看起来像$ items-> author和$ items-> title
我尝试使用以下代码,但它只显示$ items-> author作为文本,而不是从数组中检索信息。
foreach ($xml->book as $items) {
echo preg_replace('/\%(.*?)\%/e', '$items->${1}', $content);
}
对此有何想法?
答案 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);
}
数组是否包含具有此名称的密钥。