Código PHP:
   function bbcode($string){
    $string = nl2br(htmlspecialchars($string));
    $patterns = array(
        // aqui más tags
        '`\[size=([1-6]+)\](.+?)\[/size\]`is',
        '`\[spoiler\](.+?)\[/spoiler\]`is' // este es el tag para el spoiler
    );
    $replaces =  array(
        '<h\1>\2</h\1>',
        // aqui reemplazo el tag SPOILER
        '<div class="pre-spoiler">
            <input type="button" value="Mostrar Spoiler" onclick="if (this.parentNode.parentNode.getElementsByTagName(\'div\')[1].getElementsByTagName(\'div\')[0].style.display != \'\') { this.parentNode.parentNode.getElementsByTagName(\'div\')[1].getElementsByTagName(\'div\')[0].style.display = \'\';this.innerText = \'\'; this.value = \'Esconder Spoiler\'; } else { this.parentNode.parentNode.getElementsByTagName(\'div\')[1].getElementsByTagName(\'div\')[0].style.display = \'none\'; this.innerText = \'\'; this.value = \'Mostrar Spoiler\'; }" />
        </div>
        <div>
            <div class="spoiler" style="display: none;">\1</div>
        </div>'
    );
    $string = preg_replace($patterns, $replaces, $string);
    return $string;
    } 
    Código PHP:
   this.parentNode.parentNode.getElementsByTagName("div")[1].getElementsByTagName("div")[1] has no properties
onclick(click clientX=0, clientY=0) 
    Saludos.
 
