Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 可变针型_Php_Replace - Fatal编程技术网

Php 可变针型

Php 可变针型,php,replace,Php,Replace,我希望能够用函数的返回替换为我提供函数参数的模式。 我查看了preg\u replace,但没有找到编写regex的合适教程 例子: 我想像这样输出字符串: <div> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod. <p> Content is galery, type is events, id is 30 </p>

我希望能够用函数的返回替换为我提供函数参数的模式。 我查看了
preg\u replace
,但没有找到编写
regex
的合适教程

例子:

我想像这样输出字符串:

<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>

Lorem ipsum Door sit amet,为精英们献身,为我们奉献。

内容为galery,类型为events,id为30

Lorem ipsum Door sit amet,为精英们献身,为我们奉献。
对于
{:::}
构造的“有效”内容了解有限(您可能更希望限制正则表达式,而不仅仅是“不是
{
”),以任何方式使用:

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

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

说明:

  • \{
    {
    需要转义以匹配它
  • (.*):(.*):(.*)
    :将所有内容与匹配:并捕获它
  • \}
    }
    需要转义以匹配它
明确的字符串示例:

$string='一些文本
{galery:events:30}一些文本
“;

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

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

工作实例:


如果您需要更多帮助和说明,请告诉我!

什么是
$string
?这是一个非常好的入门教程。如果您想理解正则表达式,您需要付出一些努力,但是,很多东西都抓不住您的手。我想用函数替换括号内容来输出给定的字符串return。根据应用程序的复杂程度,您最好使用PHP模板引擎,而不是尝试使用正则表达式自己编写模板引擎。难道没有一个简单的函数可以做到这一点吗?我的意思是,我可以处理三个变量的分解。我只需要将括号内的内容作为单个变量使用,然后用函数结果替换括号中的内容。函数($match)的意外T_函数:(@ValentinDragan:请升级您的PHP版本,PHP 5.3自2009年就已经存在,支持将于明年7月结束。也就是说,您当前唯一的选择是将其定义为命名的帮助函数,或者使用。
echo preg_replace_callback(
    '/\{([^}:]+):([^}:]+):([^}:]+)\}/',
    function($match){
         return generate($match[1],$match[2],$match[3]);
    },$string);
if(preg_match_all("/$regexp/siU", $string, $matches)) {
  print_r($matches);
 }