Issue
function parse($string){
$counter = 0;
$string = preg_replace("_\[b\](.*?)\[/b\]_si", '<span class="b">'. $counter .'. $1</span>', $string, -1, $counter);
return $string;
}
I'm trying to make a ubb parser, that parses tags and put the counting in front of it:
[b]Hey[/b]
[b]Hello[/b]
Should return this:
<span class="b">1. Hey</span>
<span class="b">2. Hello</span>
But is returning this:
<span class="b">1. Hey</span>
<span class="b">1. Hello</span>
So beside the function above, I've tried this:
function parse($string){
$counter = 0;
$string = preg_replace_callback(("_\[b\](.*?)\[/b\]_si", function(){
'<span class="b">'. $counter++ .'. $1</span>',
}, $string);
}
but that, and the function at the top, didn't work. What am I doing wrong and/or could I try?
Solution
Eventually solved it with the help of TiMESPLiNTER (give him the credit!), didn't know $1
didn't get brought along and that you have to call a variable $matches
in the callback function and get $matches[1]
instead of $1.
$counter = 1;
function parse(){
function cb($matches){
global $counter;
return '<span class="b">'. $this->counter .'. ' . $matches[1] . '</span>';
}
$string = preg_replace_callback("_\[b\](.*?)\[/b\]_si", 'cb', $string);
}
Answered By - Thew Answer Checked By - Candace Johnson (PHPFixing Volunteer)
0 Comments:
Post a Comment
Note: Only a member of this blog may post a comment.