我想将此文本转换{unsubscribe|here.}
为<a href="">here.</a>
.
我已经编写了获取不同匹配组的正则表达式。
在这种情况下,我知道我可以 preg/str_replace}
文本的前面和结尾()但是这将是无效的,因为我还想删除另一个像这样的值{name}
,例如。
这是我写的正则表达式。/(\{unsubscribe\|)([a-z]*[^\}])(\})/
谢谢,
我想将此文本转换{unsubscribe|here.}
为<a href="">here.</a>
.
我已经编写了获取不同匹配组的正则表达式。
在这种情况下,我知道我可以 preg/str_replace}
文本的前面和结尾()但是这将是无效的,因为我还想删除另一个像这样的值{name}
,例如。
这是我写的正则表达式。/(\{unsubscribe\|)([a-z]*[^\}])(\})/
谢谢,
$str = '{unsubscribe|{name} here.}';
function fix($m){
return "<a href=''>".str_replace("{name}", "MY NAME", $m[1])."</a>";
}
print preg_replace_callback("/\{unsubscribe\|(.*)\}/", "fix", $str);
输出:
<a href=''>MY NAME here.</a>
这将去掉字符串的不同部分并在必要时进行替换。
我已经根据@waza123 的回答制定了这个解决方案。
$str = "Hi {name}, Some text {unsubscribe|here.} some more text.";
function fix($m){
return $m[1] . str_replace($m[2], '<a href="">', $m[2]) . $m[3] . str_replace($m[4], '</a>', $m[4]) . $m[5];
}
$result = preg_replace_callback('/(.*)(\{unsubscribe\|)(.*[^\}])(\})(.*)/', 'fix', $str);
echo str_replace('{name}', 'Firstname Lastname', $result);
输出:
Hi Firstname Lastname, Some text <a href="">here.</a> some more text.