【发布时间】:2013-03-06 15:39:39
【问题描述】:
好的,所以我的问题很简单。我希望答案也是。 假设我有以下 php 字符串:
<!DOCTYPE html>
<html>
<head>
<title>test file</title>
</head>
<body>
<div id="dynamicContent">
<myTag>PART_ONE</myTag>
<myTag>PART_TWO </myTag>
<myTag> PART_THREE</myTag>
<myTag> PART_FOUR </myTag>
</div>
</body>
</html>
假设这是 $content。 现在,您可以看到我有 4 个自定义标签 (myTag),其中包含一个单词的内容。 (PART_ONE、PART_TWO 等) 我想用 4 个不同的字符串替换这 4 个。后面的 4 个字符串在一个数组中:
$replace = array("PartOne", "PartTwo", "PartThree", "PartFour");
我这样做了,但没有成功:
$content = preg_replace("/<myTag>(.*?)<\/myTag>/s", $replace, $content);
所以,我想搜索 myTags(它找到 4 个)并将其替换为数组的一个条目。第一次出现应该用 $replace[0] 替换,第二次应该用 $replace[1] 替换,等等。 然后,它将“新”内容作为字符串(而不是数组)返回,以便我可以使用它进行进一步解析。
我应该如何意识到这一点?
【问题讨论】:
-
搜索 PART_ONE 等会简单得多...
-
哦,是的,我忘了说我不知道 myTag 的值,所以 PART_ONE 也可以是“MY_ELEPHANT”。我应该能够在 html 模板中输入任何内容,然后代码将看到 myTag 标记之间的任何内容。另外,我不认为“你不能用正则表达式解析 html”这句话在这里适用,因为我不是在解析标签的属性,而只是在解析标签的值,这对于正则表达式来说是一个简单且故障安全的任务。
-
你可以使用 preg_replace_callback() 代替。