我想使用preg_replace
替换所有匹配,但它只能使用一次。
这是我使用的功能:
function bbc2html($text) {
$find = array(
'~\[spoiler\](.*?)\[/spoiler\]~s'
);
$replace = array(
'<font color="red"><b>ATTENTION: SPOILER ALARM!</b></font><br>$1'
);
return preg_replace($find,$replace,$text);
}
输入:
echo bbc2html('[spoiler]Its a spoiler[/spoiler]');
echo bbc2html('[spoiler][spoiler]Its a multiple spoiler[/spoiler][/spoiler]');
输出:
<font color="red"><b>ATTENTION: SPOILER ALARM!</b></font><br>Its a spoiler
<font color="red"><b>ATTENTION: SPOILER ALARM!</b></font><br>[spoiler]Its a multiple spoiler[/spoiler]
答案 0 :(得分:1)
function bbc2html($text) {
$find = array(
'~(\[spoiler\])+(.*?)(\[/spoiler\])+~s'
);
$replace = array(
'<font color="red"><b>ATTENTION: SPOILER ALARM!</b></font><br>$2'
);
return preg_replace($find,$replace,$text);
}
可以吗?
答案 1 :(得分:0)
这是另一个功能:
function bbc2html($text) {
$find = array(
'~(\[spoiler\]\w*)+(.*?)(\[/spoiler\])+~s'
);
$replace = array(
'<font color="red"><b>ATTENTION: SPOILER ALARM!</b></font><br>$2'
);
return preg_replace($find,$replace,$text);
}