需要正则匹配替换。
:万物生{字*丛@@丛林法则*字}这里只有【魔鬼】,不具有任何气味{字*合@@合则铭记*字}。不熟,才能生长。
需要匹配的内容均以{字*
开头,以*字}
结尾
(?={字*)(.*)(?=*字})
仅匹配出一项,一整行,如下
{字*丛@@丛林法则*字}这里只有【魔鬼】,不具有任何气味{字*合@@合则铭记*字}
目标php匹配两项:
{字*丛@@丛林法则*字}
{字*合@@合则铭记*字}
并替换为
【丛】[丛林法则]
【合】[合则铭记]
最终为:
:万物生**【丛】[丛林法则]**这里只有【魔鬼】,不具有任何气味**【合】[合则铭记]**。不熟,才能生长。
请求指导
###参考文档 preg_match_all
###使用 preg_replace_callback
匹配外围组,再使用 preg_replace
处理组内。
编辑器直接粘贴进来,反斜杠会丢失,到 JS Run 获取代码
<?php
$str = ':万物生{字*丛@@丛林法则*字}这里只有【魔鬼】,不具有任何气味{字*合@@合则铭记*字}。不熟,才能生长。';
$result = preg_replace_callback('!{字\*(.+?)\*字}!u', function ($matches) {
return preg_replace('!([\x{4e00}-\x{9fa5}])@@([\x{4e00}-\x{9fa5}]{4})!u', '**【\\1】[\\2]**', $matches[1]);
}, $str);
var_dump($result);