function parse($string){
$counter = 0;
$string = preg_replace("_\[b\](.*?)\[/b\]_si", '<span class="b">'. $counter .'. $1</span>', $string, -1, $counter);
return $string;
}
我正在尝试制作一个 ubb 解析器,它解析标签并将计数放在它前面:
[b]Hey[/b]
[b]Hello[/b]
应该返回这个:
<span class="b">1. Hey</span>
<span class="b">2. Hello</span>
但正在返回这个:
<span class="b">1. Hey</span>
<span class="b">1. Hello</span>
所以除了上面的功能之外,我还尝试过这个:
function parse($string){
$counter = 0;
$string = preg_replace_callback(("_\[b\](.*?)\[/b\]_si", function(){
'<span class="b">'. $counter++ .'. $1</span>',
}, $string);
}
但是那个以及顶部的功能不起作用。我做错了什么和/或我可以尝试吗?
我会用一个小班来解决这个问题,其中柜台作为财产,callback是类的一个方法。
class Increaser {
private $counter;
public function replace($string) {
$this->counter = 0;
return preg_replace_callback("_\[b\](.*?)\[/b\]_si", array($this, 'createReplacement'), $string);
}
private function createReplacement($matches) {
++$this->counter;
return '<span class="b">'. $this->counter .'. ' . $matches[1] . '</span>';
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)