在我的字符串中(实际上是单页的HTML)我有一些我想要访问的标签,并用相关内容替换。
例如:
<p>[@intro_text]</p>
将成为:
<p>introduction text!</p>
这对于str_replace来说非常简单,但我还有一系列标签,如下所示:
[@snippet_searchbox]
[@snippet_contactbox]
我需要在html中找到所有这些标签 [@ snippet _ ?????] 。
我基本上只想得到一个包含所有标签名称的数组。从中我可以很容易地找到它应该替换的内容。
例如:
Array
(
[0] => snippet_searchbox
[1] => snippet_contactbox
[2] => snippet_somethingelse
)
最好的方法是什么?我一直在玩 preg_match ,但每当我尝试使用正则表达式时我都会睁大眼睛,尽管我确信这很简单。
任何建议都会感激不尽,如果有人可以帮助我使用正则表达式代码我应该使用正则表达式。谢谢!
答案 0 :(得分:1)
不要为这些标识符发明自己的语法,而是使用常规(X)HTML属性:
<html>
…
<p id="intro_text"></p>
…
<div id="searchbox"></div>
…
<div id="contactbox"></div>
…
</html>
或命名空间元素:
<html>
…
<p tpl:id="intro_text"></p>
…
<tpl:snippet id="searchbox"/>
…
<tpl:snippet id="contactbox"/>
…
</html>
答案 1 :(得分:1)
您可以使用str_replace()
:
$tags = array(
'[@intro_text]' => 'introduction text!',
'[@snippet_searchbox]' => '<div>some text</div>',
/* more items here */
);
$html = str_replace(array_keys($tags), array_values($tags), $html);
答案 2 :(得分:1)
为什么不简单地使用str_replace?
str_replace("[@intro_text]", $new_content_of_intro_text, $html_file);