Search code examples
phpregexpreg-replacephpbb

preg_replace for "phpbb" quote and color tag from string


I have a string like below and I want to parse the quote tag tag to <blockquote>"Content</blockquote> and want to replace the color tag with an empty string.

Input:

[quote=&quot;De real one ROOFVISSER&quot;:g3o3w038][color=green:g3o3w038]Thnxxx voor de oppeppende taal Egon, maar het zal niet veel helpen volgende week repetitieweek en samen wonen is net zo erg als een zeurende moeder waarvan je alleen maar mag gaan leren totdat je er koppijn van krijgt.......
[/color:g3o3w038][/quote:g3o3w038]

Output:

<blockquote>Thnxxx voor de oppeppende taal Egon, maar het zal niet veel helpen volgende week repetitieweek en samen wonen is net zo erg als een zeurende moeder waarvan je alleen maar mag gaan leren totdat je er koppijn van krijgt.......</blockquote>

I have already tried the below things and StackOverflow answers as well,

Re-enabling Quotes in phpBB Color Code

preg_match_all('/\[(b|i|size|color|center|quote|url|img)=?(.*?)\](.+?)\[\/\1\]/', $input_lines, $output_array);

but it returns the blank output array.

Please suggest me correct preg_replace pattern to filter out the content.


Solution

  • This is probably most easily done using two regexs, one to remove the [color...] tags and one to replace the [quote...] tags with <blockquote>:

    $string = '[quote=&quot;De real one ROOFVISSER&quot;:g3o3w038][color=green:g3o3w038]Thnxxx voor de oppeppende taal Egon, maar het zal niet veel helpen volgende week repetitieweek en samen wonen is net zo erg als een zeurende moeder waarvan je alleen maar mag gaan leren totdat je er koppijn van krijgt.......
    [/color:g3o3w038][/quote:g3o3w038]';
    echo preg_replace(array('#\[/?color[^]]*]#', '#\[(/?)quote[^]]*]#'), array('', '<$1blockquote>'), $string);
    

    Output:

    <blockquote>Thnxxx voor de oppeppende taal Egon, maar het zal niet veel helpen volgende week repetitieweek en samen wonen is net zo erg als een zeurende moeder waarvan je alleen maar mag gaan leren totdat je er koppijn van krijgt....... </blockquote>
    

    Demo on 3v4l.org