Premetto che non sono molto bravo con le regex.

Ho scritto una regex in php per rimuovere tutti i tag php:
Codice PHP:
<?php
    
function remove_php_tags$content )
    {
        return 
preg_replace( array( "#<%|%>#" "#<\?|\?>#" "#<script\s+language\s*=\s*('|\")php('|\")\s*>#" ) , "" $content );
    }
?>
Ed avrei due curiosità:
- E' sicura questa regex o può essere bypassata?
- E se io volessi sostituire i tag < e > con &amp;#60; e &amp;#62; senza però sostituire anche i tag normali ( tipo <html>[b][i] etc... ) ?

Sto facendo mille prove documentandomi un pò dappertutto ( compreso php.net e il manule ufficiale http://it2.php.net/manual/en/function.preg-replace.php ) ma non essendo molto pratico...


---- EDIT ----

Okkei, cell'ho fatta a farne un pezzo :P
Codice PHP:
<?php
    
function replace$p )
    {
        return 
preg_replace(
            array( 
"#<(\?)#si" "#<(%)#si" "#<(script\s+language\s*=\s*['\"]\s*php\s*['\"]\s*>)#si" ) ,
            array( 
"<$1" ) ,
            
$p
        
);
    }
?>
Rimangono tre problemi:
- Mi serve selezionare anche tutta la parte che può essere contenuta dai tag php.
- Mi serve che vengono sostituiti i tag finali SOLO se ci sono.
- La 3° regex "#<(script\s+language\s*=\s*['\"]\s*php\s*['\"]\s*>)#si" non mi funziona...

Ora continuo a smanettare ancora un pò...

---- EDIT N° 2 ----

Ho capito il primo problema... avevo inserito array( "&#60;$1" ) nelle stringhe da modificare e giustamente mi editava sola la prima regex. Ora la regex:

Codice PHP:
<?php
    
function replace$p )
    {
        return 
preg_replace(
            array( 
"#<(\?)#si" "#<(%)#si" "#<(script\s+language\s*=\s*['|\"]\s*php\s*['\"]\s*>)#si" ) ,
            
"<$1" ,
            
$p
        
);
    }
?>
Funziona... ora dovrei selezionare tutto ciò che segue i tag <?|<%|<script language="php">...
Rimettiamoci a smanettare