可变针模式

时间:2013-08-11 19:10:23

标签: php replace

我希望能够替换一个模式,该模式向我提供函数返回的函数参数。 我查看了preg_replace但是我没有找到编写regex的正确教程。

实施例

    <?php
      function generate($content, $type, $id){

         $my_onthefly_content = 'Content is '.$content.', type is '.$type.', id is '.$id;

         return $my_onthefly_content;
      }

      $string = '
       <div>
         Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod.
           <p>
             {galery:events:30}
           </p>
         Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod.
       </div>';

    ?>

我想输出这样的字符串:

<div>
  Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod.
    <p>
      Content is galery, type is events, id is 30
    </p>
  Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod.
</div>

2 个答案:

答案 0 :(得分:1)

您可以使用以下正则表达式

\{(.*?):(.*?):(.*?)\}

说明:

  • \{{需要转义才能与之匹配
  • (.*?):(.*?):(.*?):匹配所有内容:并捕获它。
  • \}}需要转义才能与之匹配

明确的字符串检查:

$string = ' Some Text {galery:events:30} Some Text ';

检查它是否与您的模式匹配:

if(preg_match_all("/$regexp/siU", $string, $matches)) {
  print_r($matches);
 }

是的,确实如此!

工作实例:

http://viper-7.com/EdNUFm

如果您需要更多帮助和澄清,请告诉我们!

答案 1 :(得分:0)

对于{::}构造的“有效”的知识有限(您可能希望限制正则表达式更多只是“{或{{1 “),以任何方式使用preg_replace_callback()

: