Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Problema con uso di preg_replace

    Ciao a tutti, ho un problema strano che non riesco a risolvere.
    Devo "pulire" del codice html eliminando le varie classi dei

    <td> ecc, e per fare questo ho usato queste due funzioni
    Codice PHP:
    function removeEvilTags($source){
               
    $allowedTags='<a>
    [b]<h1><h2><h3><h4>[i]' 
    .
                 
    '<img>[*][list=1]

    [b]<table>' 
    .
                 
    '<tr><td><th><u><ul>';
               
    $source strip_tags($source$allowedTags);
               return 
    preg_replace('/<(.*?)>/ie'"'<'.removeEvilAttributes('\\1').'>'"$source);
        }
        
        function 
    removeEvilAttributes($tagSource){
               
    $stripAttrib "' (style|class)=\"(.*?)\"'i";
               
    $tagSource stripslashes($tagSource);
               
    $tagSource preg_replace($stripAttrib''$tagSource);
               echo 
    $tagSource;
            return 
    $tagSource;
        } 
    e fin qui tutto a posto, ottengo il risultato voluto. Il problema nasce quando cerco di inglobare il tutto in un oggetto...ecco la classe:

    Codice PHP:
    class ClearHtml{
            
            var 
    $text '';
            
            function 
    ClearHtml($text=''){
                
    $this->text $text;    
            }
            
            function 
    clear(){
                if(
    $this->text != '')
                    return 
    $this->removeEvilTags($this->text);
            }
            
            function 
    removeEvilTags($source){
                   
    $allowedTags='<a>
    [b]<h1><h2><h3><h4>[i]' 
    .
                     
    '<img>[*][list=1]

    [b]<table>' 
    .
                     
    '<tr><td><th><u><ul>';
                   
    $source strip_tags($source$allowedTags);
                   return 
    preg_replace('/<(.*?)>/ie'"'<'.$this->removeEvilAttributes('\\1').'>'"$source);
            }
            
            function 
    removeEvilAttributes($tagSource){
                   
    $stripAttrib "' (style|class)=\"(.*?)\"'i";
                   
    $tagSource stripslashes($tagSource);
                   
    $tagSource preg_replace($stripAttrib''$tagSource);
                   echo 
    "DENTRO";
                return 
    $tagSource;
            }
            
            function 
    setText($text){
                
    $this->text $text;    
            }
            
        } 
    alla riga di removeEvilTags

    Codice PHP:
    return preg_replace('/<(.*?)>/ie'"'<'.$this->removeEvilAttributes('\\1').'>'"$source); 
    la funzione removeEvilAttributes non viene mai richiamata....come mai? qualche idea? cosa mi sfugge?

    grazie!! roby.

    ps: vedo che mi toglie uno slash... la chiamata è
    removeEvilAttributes('\\1') con due slash!

  2. #2

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.