Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 34

Discussione: [PHP]preg_replace

  1. #1

    [PHP]preg_replace

    sono alla frutta

    chi č cosė gentile da mostrarmi un espressione regolare che :

    elimini queste due stringhe "<span class="pippo"> e "</span>", se posizionate dentro a qualsiasi tag, e per dentro intendo proprio dentro, tipo:

    [/b]sito</span>.it">link



    grazie

  2. #2
    qualsiasi tag cosa intendi? cmq prova con questa:

    codice:
    echo preg_replace('/(<[a-z]+.*?)<span.*?>(.*?)<\/span>/is','$1$2',$tua_stringa);
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  3. #3
    Originariamente inviato da AnĒkin
    qualsiasi tag cosa intendi? cmq prova con questa:

    codice:
    echo preg_replace('/(<[a-z]+.*?)<span.*?>(.*?)<\/span>/is','$1$2',$tua_stringa);
    prima di tutto, grazie di cuore, stavo per lancaire il portatile dal terrazzo

    per qualsiasi tag intendo proprio qualsiasi

    <img>, <a>, <div>,

    , <span>, ecc, ecc

    ho provato come mi hai consigliato, funzionare funziona, ma lo leva anche in altre parti della stringa.

    diciamo che se io ho

    $stringa = 'ciao <span class="pippo">pippo</span> io sono amico di sito</span>.it">pippo';

    lo elimina da entrambi, anche nel primo che non č dentro ad un tag

  4. #4
    diciamo che dovrebbe suonare tipo:

    togli la stringa <span class='pippo'> e </span> se compresa tra i caratteri < e >, credo

  5. #5
    mmm riprova con questa:
    codice:
    preg_replace("/(<([a-z]+)[^>]*?)<span.*?>(.*?)<\/span>(.*?<\/\\2>)/is",'$1$3$4',$txt);
    sono in ufficio e non sto facendo prove, appena arrivo a casa cmq la controllo meglio.
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  6. #6
    Originariamente inviato da AnĒkin
    mmm riprova con questa:
    codice:
    preg_replace("/(<([a-z]+)[^>]*?)<span.*?>(.*?)<\/span>(.*?<\/\\2>)/is",'$1$3$4',$txt);
    sono in ufficio e non sto facendo prove, appena arrivo a casa cmq la controllo meglio.
    ok non preoccuparti, č tutto il giorno che sklero, non sarā un ora in pių a fare la differenza

    comunque ci siamo quasi, ho provato e funziona, ma io sono spaccamarrones, ho aggiunto un immagine nel testo cosė:

    codice:
    pippo</span>' title='<span class='pippo'>pippo</span>' />
    li mi lascia lo span

    quando sei operativo, ti posto tutto l'insieme (poche righe), almeno controlliamo la stessa cosa

  7. #7
    Allora, ho dato una controllata, se lo span puō presentarsi pų volte all'interno dello stesso tag č necessario usare due regex nidificate, mentre se si presenta una volta sola puoi usare questa regex qui, che in prima approssimazione mi pare faccia il suo lavoro:

    codice:
    $rex = '/(<((img|input|link|meta)|[a-z]+).*?)<span.*?>(.*?)<\/span>(.*?(?(3)>|<\/\\2>))/is' ;
    $newtext = preg_replace($rex,'$1$4$5',$text) ;
    dove vedi scritti "img|input|link|meta|pippo|pluto|paperino" aggiungi i tag che non hanno tag di chiusura, a me non ne sono venuti in mente altri.

    :ciauz:
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  8. #8
    dunque ho provato ma c'č qualcosa che non va

    la funzione completa č questa, perchč magari facciamo confusione e non arriviamo mai alla conclusione e io poi, abuso della tua cortesia

    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Ricerca ed evidenzia case insensitive senza PHP 5</title>
    <style type="text/css">
    body {font-family: Tahoma, Verdana, sans-serif;}
    .motore{font-weight:bold;color:#ff0000;}
    #red {width:20px;height:20px;background:red;}
    #blue {width:20px;height:20px;background:blue;}
    </style>
    </head>
    
    <body>
    <?
    function grassettoMultiplo($stringa, $parole) {
    	for($a = 0, $b = count($parole); $a < $b; $a++)
    
    		$stringa = grassetto($stringa, $parole[$a]);
    		
    	return $stringa;
    }
    function grassetto($stringa, $parola){
    
    	//return preg_replace("/(?i)([^<]\b)({$parola})(\b[^>])/", "\\1<span class='motore'>\\2</span>\\3", $stringa);
    	$stringa2 =  preg_replace("/(?i)([^<]*?)({$parola})([^>]*?)/", "\\1<span class='motore'>\\2</span>\\3", $stringa);
    
    	$rex = '/(<((img|input|link|meta)|[a-z]+).*?)<span.*?>(.*?)<\/span>(.*?(?(3)>|<\/\\2>))/is' ;
    	$stringa = preg_replace($rex,'$1$4$5',$stringa2) ;
     
    	
    	return $stringa;
    	
    }
    
    $testo = "Hello <span id='test'>my</span> World pippo questo 
    il logo  <acronym  title='prova testo pippo'>prova</acronym>";
    
    ?>
    
    <form id="prova" action="testa.php" method="post" enctype="multipart/form-data">
    <input type="text" name="cerca" value="" />
    <input type="submit" name="invia" value="Cerca" />
    </form>
    <div style="border:1px solid silver;margin-top:10px;padding:5px;">
    
    
    
    
    <?
    if($_REQUEST['cerca']!=''){
    $cerca = explode (' ', $_REQUEST['cerca']);
    echo grassettoMultiplo($testo, $cerca);
    }else{
    echo $testo;
    }
    ?>
    </p></div>
    </body>
    </html>
    cosė basta un copia e incolla, e vediamo quanto sono idiota

  9. #9
    secondo me conviene fare la ricerca su un testo con strip_tags ... o almeno confrontare se il match esiste nella stringa strip_tags come in quella senza strip_tags (comunque meno affidabile)


    per farti un'idea in una stirnga potrei scrivere 'pippo class="pippo"' e se volessi cercare pippo dovrebbe fare highlight di entrambi.

    in poche parole dubito ci sia una regex affidabile al punto da evitare tutti i tipi di tags (non sono 8, sono "una trentina" ....) quindi opti per una ricerca ristretta (non puoi cercare la parola span, ad esempio) oppure passi tempo a fare debug perchč facilmente troverai casi particolari di tags con nomi, id o classi, metodi javascript o quello che ti pare che contengono le tue parole
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  10. #10
    ora do un'occhiata al codice e vediamo che si puō fare
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

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.