1

私の文字列 (事実上、単一ページの HTML) には、アクセスして関連するコンテンツに置き換えたいタグがいくつかあります。

例えば:

<p>[@intro_text]</p>

となります:

<p>introduction text!</p>

これはすべてstr_replaceで行うのに十分簡単ですが、次のような一連のタグもあります。

[@snippet_searchbox]
[@snippet_contactbox]

これらのタグ[@snippet_?????]が html 内ですべて出現するのを見つける必要があります。

私は基本的に、すべてのタグ名の配列で終わりたいだけです。これから、置き換える必要のあるコンテンツを簡単に見つけることができます。

例えば:

Array
(
    [0] => snippet_searchbox
    [1] => snippet_contactbox
    [2] => snippet_somethingelse
)

これを行う最善の方法は何ですか?私はpreg_matchで遊んでいますが、正規表現を試みるたびに斜視になります。これは非常に単純であると確信しています。

誰かが私が使用すべき正規表現コードで私を助けることができれば、正規表現で行う必要がある場合は、どんな提案でも感謝します。ありがとう!

4

3 に答える 3

1

単に str_replace を使用しないのはなぜですか?

str_replace("[@intro_text]", $new_content_of_intro_text, $html_file);
于 2012-06-15T12:13:21.230 に答える
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>

次に、DOMXPathを使用してそれらを検索し、置換/変更します。これを行う方法については、StackOverflow にたくさんの例があります。

于 2012-06-15T12:09:31.533 に答える
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);
于 2012-06-15T12:11:13.387 に答える