Php 如何找到';用户定义的标签';使用正则表达式?

Php 如何找到';用户定义的标签';使用正则表达式?,php,regex,Php,Regex,所以我承认我对正则表达式很不满意,所以如果有人能在这里帮我一点忙,无论是关于如何执行特定搜索;还有应用正则表达式的实际工作原理,我会欣喜若狂 我试图在我正在构建的PHP框架中实现“用户可修改标签”的放置/替换 示例如下: $ReplacementOpenTag = "[{"; $ReplacementCloseTag = "}]"; $SomeRegex = "$ReplacementOpenTag(...)$ReplacementCloseTag"; $Matches = array();

所以我承认我对正则表达式很不满意,所以如果有人能在这里帮我一点忙,无论是关于如何执行特定搜索;还有应用正则表达式的实际工作原理,我会欣喜若狂

我试图在我正在构建的PHP框架中实现“用户可修改标签”的放置/替换

示例如下:

$ReplacementOpenTag = "[{";
$ReplacementCloseTag = "}]";

$SomeRegex = "$ReplacementOpenTag(...)$ReplacementCloseTag";
$Matches = array();

if( preg_match_all($ReplacementSubject,$SomeRegex,&$Matches) <= 0 )
    return;
else
    foreach( $Matches as $Match ) // <--- Match?
        echo($Match[0]); // <--- Right?
$ReplacementOpenTag=“[{”;
$ReplacementCloseTag=“}]”;
$SomeRegex=“$ReplacementOpenTag(…)$ReplacementCloseTag”;
$Matches=array();

如果(preg_match_all($ReplacementSubject,$SomeRegex,&$Matches)首先转义分隔符,因为它们可能包含特殊字符(在您的示例中,它们确实包含):

接下来,在分隔符之间使用非reedy模式构建正则表达式:

$SomeRegex = "/$ReplacementOpenTag(.*?)$ReplacementCloseTag/s";
那么,就这样使用它吧

preg_match_all($SomeRegex, $ReplacementSubject, $Matches);
或者,对于替换:

preg_replace($SomeRegex, "<b>$1</b>", $ReplacementSubject);
preg_replace($SomeRegex,$1,$ReplacementSubject);

非常感谢-我现在只有一个问题要问你,因为我正在尝试测试这个问题-我如何“手动”转义我的分隔符?我把这个:''倒进了正则表达式测试程序,正如预期的那样,它会出现一个坏模式-我尝试了两个方向的斜杠,但都没有用:-/。我只是想彻底了解一下我的理解。看看哪些字符被转义,并用反斜杠转义。例如:
preg\u quote
也转义
,但在您的情况下,这是不需要的。
\
也会有效)。很好-谢谢。我相信我已经完全失去了对regex测试仪的信心-因为完全复制/粘贴仍然失败。如果我有任何问题,我会实现它并报告回来。Cheers可能会更有帮助;)顺便说一句,当你复制/粘贴时,要小心转义,以及PHP的单/双引号处理.Regex101整天。谢谢你,先生。可能有两份
preg_replace($SomeRegex, "<b>$1</b>", $ReplacementSubject);