2017-04-24 8 views
0

これを説明する方法はわかりませんが、私はベストを尽くします。私はテキストの特定のコンテナ内の文字列を置き換えるための構造のような短いコードを複製しようとしています。 Wordpressがショートコードを操作する方法のようなもの。ショートコード目的のためのstr_replace

たとえば、[text str="hello world" class="text"]は、<p class="text">hello world</p>と出力されます。

はここで、私はこれまでのところ、私の探査との持っているもの、私は特定の文字列に基づいてテキストを置き換えるよ

<?php 

$text = "[hello]"; 

$String = str_replace(array('[hello]'),array('Hi there!'),$text); 
echo $String; 

?> 

です。どのようにすれば具体的になり、[text str="hello world" class="text"]のようなものを呼び出して、<p class="text">hello world</p>のように出力できますか?

+0

あなたが複数の要素にあなたのショートコードの内容を分割する必要があります。この場合、 '' text str = "hello world" class = "text"] 'を' text'、 'str =" hello world "'、 'class =" text "'に分割します。そして、おそらく、そのすべての入力を受け入れるデフォルト引数を持つ関数を作成する必要があります。例(http://php.net/manual/en/functions.arguments.php) – Dimi

+0

WordPress [https://developer.wordpress.org/reference/functions/do_shortcode/]の仕組みを見てきましたか? – andrew

答えて

0

次の例のように、正規表現を使用することができます。

$find = [ 
    '~\[b\](.*?)\[/b\]~s', 
    '~\[size=(.*?)\](.*?)\[/size\]~s' 
]; 

$replace = [ 
    '<b>$1</b>', 
    '<span style="font-size:$1px;">$2</span>' 
]; 

$text = preg_replace($find,$replace,$text); 
関連する問題