我需要的是str_replace或regex来替换字符串中的一组括号之间的文本,其中括号可能出现多次,并且该文本的内容将是未知的。
有几个答案 - 其中一些被标记为重复,但它们都没有真正回答这个简单的问题,所以在搜索了近一个小时后,什么都没找到,我决定问这个问题。因为我最终在函数在线使用preg_replace工具,我想我会发布它,也许其他人可以提出更好的解决方案或可能为php提供str_replace变种。
所以这就是我提出的 - 有效 - 但请随意提出更好的选择。
//test string
$string = 'Fearless, Immunity (Cursed), Summoned (Spellcaster), Tactician, Tough/4';
$repVal = '(X)';
$count = null;
$returnValue = preg_replace('~\\([^\\)]*\\)~', $repVal, $string, -1, $count);
$returnValue = preg_replace('~(\\/)(\\d+)~', '/#', $string, -1, $count);
运行两个preg_replace语句后,返回的字符串将等于:
'Fearless, Immunity (X), Summoned (X), Tactician, Tough/#, Undead'
PS:我还需要用/#替换/ 4或任何其他/ x字符串,所以我也包含了该语句。