Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768

    funzione dentro eregi_replace

    buonanotte a tutti

    forse la domanda vi sembrerà banale, ma come si fa ad inserire una funzione dentro l'eregi_replace?

    io ho questo codice:

    Codice PHP:
    $stringa eregi_replace('\['.$tag.'\]([^\[]+)\[\/'.$tag.'\]'cambia('\\1'), $stringa);

    function 
    cambia($stringa){
         
    $stringa str_replace '&lt;''<'$stringa);
         
    $stringa str_replace '&gt;''>'$stringa);
         return 
    $stringa;

    perchè non funziona?

    IMPORTANTE: il forum mangia dei backslashes nella regexp...
    Hai provato a creare un sito con Jaaxo Cms PHP5? new!

  2. #2
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768
    up
    Hai provato a creare un sito con Jaaxo Cms PHP5? new!

  3. #3
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768
    ho fatto altri tentativi ma non riesco
    Hai provato a creare un sito con Jaaxo Cms PHP5? new!

  4. #4
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768
    up
    Hai provato a creare un sito con Jaaxo Cms PHP5? new!

  5. #5
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768
    up
    Hai provato a creare un sito con Jaaxo Cms PHP5? new!

  6. #6
    Utente di HTML.it L'avatar di mariox
    Registrato dal
    Nov 2006
    Messaggi
    837
    prova ad inserire eregi_replace all'interno della tua funzione:

    Codice PHP:
    function cambia($stringa){
         
    $stringa str_replace '&lt;''<'$stringa);
         
    $stringa str_replace '&gt;''>'$stringa);
         
         return 
    $stringa eregi_replace('['.$tag.']([^[]+)[/'.$tag.']'$stringa$stringa);
    }

    cambia('\1'); 

  7. #7
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768
    però così facendo applicherebbe il replace a tutto il testo, mentre a me serve solo quello che risponde alla mia regexp

    o no?
    Hai provato a creare un sito con Jaaxo Cms PHP5? new!

  8. #8
    Utente di HTML.it L'avatar di mariox
    Registrato dal
    Nov 2006
    Messaggi
    837
    Per tutto il resto cosa intendi?

    in pratica ti va a sostituire la stringa $stringa che passi in input alla funzione.

    Codice PHP:
    function cambia($stringa){

         
    $stringa str_replace '&lt;''<'$stringa);
    //converte all'interno di $stringa l'entità html in <
         
    $stringa str_replace '&gt;''>'$stringa);
    //converte all'interno di $stringa l'entità html in >
         
         
    return $stringa eregi_replace('['.$tag.']([^[]+)[/'.$tag.']'$stringa$stringa);
    //restituisce la stringa di partenza sostituita dai valori del pattern

    ?>

    }

    cambia('\1'); 

  9. #9
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768
    forse non mi sono spiegato bene

    io ho, ad esempio, questa stringa:

    $stringa = '&lt;&lt; ciao [YT]&lt;object height="366" width="425"&gt;[/YT] &lt;&gt;';

    e devo ottenere questo:

    $stringa = '&lt;&lt; ciao [YT]<object height="366" width="425">[/YT] &lt;&gt;';

    quindi devo recuperare il contenuto dentro i tag: [YT][/YT] e applicare la sostituzione

    usando questa:
    Codice PHP:
    $stringa eregi_replace('\['.$tag.'\]([^\[]+)\[\/'.$tag.'\]''\\1'$stringa); 
    quindi devo modificare il $1 ottenuto dall'eregi_replace

    spero di essere stato più chiaro
    Hai provato a creare un sito con Jaaxo Cms PHP5? new!

  10. #10
    Utente di HTML.it L'avatar di gasmor
    Registrato dal
    Apr 2004
    Messaggi
    1,768
    ho provato a fare una cosa del genere:

    teoricamente dovrebbe andare ma in pratica l'eregi_replace non cambia nulla (e i $matches sono corretti) Perchè? :master:

    codice:
         $change = '';
    	 preg_match_all("/\[".$tag."\]([^\[]+)\[\/".$tag."\]/", $stringa, $matches);
    	 for ($i=0; $i< count($matches[0]); $i++) {
    	     $change = str_replace ( '&lt;', '<', $matches[1][$i]);
    		 $change = str_replace ( '&gt;', '>', $change);
    		 $stringa = eregi_replace($matches[0][$i], $change, $stringa);
    	     #echo  $matches[0][$i].'
    '.$matches[1][$i].'
    
    
    ';
    		 #echo  $matches[0][$i].'
    '.$change.'
    
    
    '; 
    	 }
    Hai provato a creare un sito con Jaaxo Cms PHP5? new!

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.