我希望能够替换一个模式,该模式向我提供函数返回的函数参数。
我查看了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>
答案 0 :(得分:1)
您可以使用以下正则表达式:
\{(.*?):(.*?):(.*?)\}
说明:
\{
:{
需要转义才能与之匹配(.*?):(.*?):(.*?)
:匹配所有内容:并捕获它。\}
:}
需要转义才能与之匹配明确的字符串检查:
$string = ' Some Text
{galery:events:30} Some Text
';
检查它是否与您的模式匹配:
if(preg_match_all("/$regexp/siU", $string, $matches)) {
print_r($matches);
}
是的,确实如此!
如果您需要更多帮助和澄清,请告诉我们!
答案 1 :(得分:0)
对于{::}
构造的“有效”的知识有限(您可能希望限制正则表达式更多只是“{
或{{1 “),以任何方式使用preg_replace_callback()
:
: