Php 带有可选参数的Reg exp

Php 带有可选参数的Reg exp,php,regex,preg-replace,Php,Regex,Preg Replace,我需要reg exp来匹配一些文本,然后生成一个CTA按钮。我想要的是,以下文本将产生输出: 例1 对于不在替换中的零件,您需要使用非捕获组(或更改替换中的编号以说明所有零件): 然后,替换字符串应为: <a href="$2" $3 $4>$1</a> 这使用了一个非捕获组来匹配整个class=“…”元素,然后只捕获…部分。您提供了您的尝试,这是很好的,但是我认为如果您提供了预期输入和输出的示例,它会更清晰,您获得响应的机会也会更好。从你上面的描述中不清楚什么文本是文

我需要reg exp来匹配一些文本,然后生成一个CTA按钮。我想要的是,以下文本将产生输出:

例1
对于不在替换中的零件,您需要使用非捕获组(或更改替换中的编号以说明所有零件):

然后,替换字符串应为:

<a href="$2" $3 $4>$1</a>

这使用了一个非捕获组来匹配整个
class=“…”
元素,然后只捕获
部分。

您提供了您的尝试,这是很好的,但是我认为如果您提供了预期输入和输出的示例,它会更清晰,您获得响应的机会也会更好。从你上面的描述中不清楚什么文本是文字,什么文本是变量。彼得:我现在提供了一些示例-我希望这足够了:)我假设第一个示例中的
$4
是一个错误,但除此之外:*是否真的存在字符串
,可选的
目标
属性的末尾?*您是否保证没有
“双引号字符串中间的字符/代码”*您需要检查示例中显示的所有括号是否存在吗?彼得:我需要的是让我后端的用户创建一个带有href和标题的链接。。。然后我需要他们能够为链接提供目标和类,但我不想要求他们这样做。有道理吗?:)我将把您交给@Barmar:-)的能手,如果我需要添加一些额外的类,这些类不需要位于{BUTTON}-标记中,但必须位于HTML输出中,该怎么办?:)我得到这个错误:编译失败:第50I行偏移量85处的不匹配括号意外地遗漏了
target
之前的括号。固定的。
{BUTTON text="(some text)" link="(some link)" target="(target, OPTIONAL)"}

<a href="(some link)" target="(target)">(some text)</a>
{BUTTON text="(some text)" link="(some link)"}

<a href="(some link)">(some text)</a>
{BUTTON text="([a-zA-Z0-9 ]+)" link="([A-Za-z0-9\/\:\.\?\=]+)"( target=")?([a-zA-Z\_]+)?(")? ( class=")?([a-zA-Z\_]+)?(")?}
{BUTTON text="([a-zA-Z0-9 ]+)" link="([A-Za-z0-9\/\:\.\?\=]+)"\s*(target="[a-zA-Z\_]+")?\s*(class="[a-zA-Z\_]+")?}
<a href="$2" $3 $4>$1</a>
{BUTTON text="([a-zA-Z0-9 ]+)" link="([A-Za-z0-9\/\:\.\?\=]+)"\s*(target="[a-zA-Z\_]+")?\s*(?:class="([a-zA-Z\_]+)")?}

<a href="$2" $3 class="c1 c2 $4">$1</a>