Allora, sto sviluppando un plugin semplice per suonare mp3 singoli o playlist.
Il plugin funziona semplicemente inserendo nel testo dell'articolo

{mplay}percorso/al/file.mp3{/mplay}

oppure per suonare un intera cartella


{mplist}percorso/cartella{/mplist}

La cosa che non capisco è questa:
Codice PHP:
defined('_JEXEC') or die('Restricted access');
jimport('joomla.plugin.plugin');
class 
plgContentSfmp3player extends JPlugin 
{
    function 
onPrepareContent(&$article,&$params
    {
        
$this->_replace_player($article);
        return 
true;
    }
    function 
_replace_player($article
    {
        
$found      0;
        
$ereg      "#{mplay}(.*?){/mplay}#s";
        
$eregplaylist "#{mplist}(.*?){/mplist}#s";
        if(
preg_match_all($ereg,$article->text,$matches,PREG_SET_ORDER)) 
        {
            foreach(
$matches as $match
            {
                 
// [cut]
                 // bla bla bla codice di pre-elaborazione
                
$mp3_file      $match[1];
                
$pre_code                     $this->plgContentSfmp3player_renderPlayer($mp3_file,$player_titles,false,$remote);
                
$flag_pos                     JString::strpos($article->text,$match[0]);
                
$article->text                 JString::substr_replace($article->text,$pre_code,$flag_pos,JString::strlen($match[0]));
            }
        
$found++;
        }
        if(
preg_match_all($eregplaylist ,$article->text,$matches,PREG_SET_ORDER)) 
        {
            foreach(
$matches as $match
            {
                
// [cut]
                 // bla bla lettura cartella e recupero file e titoli
                
$pre_code                     $this->plgContentSfmp3player_renderPlayer($mp3_file,$player_titles,true);
                
$flag_pos                     JString::strpos($article->text,$match[0]);
                
$article->text                 JString::substr_replace($article->text,$pre_code,$flag_pos,JString::strlen($match[0]));
            
            }
            
$found++;
            
        }
        return (
$found >0);
    }
    function 
plgContentSfmp3player_renderPlayer($mp3_list$mp3_titles$playlistwidth=false,$remote=false)
    {
    
// bla bla bla
    
}

Ora vorrei capire come mai se passa dal primo preg_match_all ($ereg) quando scrivo {mplay}....etc{/mplay} e inserisce tranquillamente l'object con i parametri, nel secondo caso proprio non entra nemmeno nel blocco IF se scrivo {mplist}....etc{/mplist}.

Ho provato a scrivere i vari tag {} insieme nell'articolo, e anche se sono 150 tag singoli me li esegue, mentre {mplist} proprio non ci si rivince

E' praticamente uguale il regexp dei 2 casi...infatti se faccio un file php a parte e testo il preg_match sul testo ci entra, se lo eseguo da dentro il plugin niente..forse c'è qualche dinamica di richiamo del plugin o buffering a me oscuro?