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

    preg_replace: sostituire tutte le occorrenze

    ho scritto questo codice:

    codice:
    foreach ($array[$k] as $sK=>$sV)
    {
    	$str=preg_replace("#(.+)(<% $sK %>)(.+)#s","\${1} $sV \${3}",$str);
    }
    che praticamente mi scorre un array e sostituisce ogni occorrenza del tipo <% QUALSIASI_COSA %> con l'omonima variabile e fin qui tutto bene...
    la cosa che non capisco è come mai le sostituzioni me le fa tutte, ma quando sono più di una per ogni stessa variabile non me mi fa solo l'ultima.


    ad esempio, in questo codice mi fa tutti i dovuti replace:
    <tr>
    <td><% NEWS_ID %></td>
    <td><% TITOLO %></td>
    <td><% SOTTOTITOLO %></td>
    <td>modifica</td>
    <td>cancella</td>
    </tr>


    mentre se il testo lo trasformo così:
    <tr>
    <td><% NEWS_ID %></td>
    <td><% TITOLO %></td>
    <td><% SOTTOTITOLO %></td>
    <td><% TITOLO %></td>
    <td>cancella</td>
    </tr>


    mi ritrovo ad avere sostituito solo l'ultima occorrenza di TITOLO...sapete spiegarmi come mai?
    forse perché in $array[$k] la chiave TITOLO ( così come ogni altra chiave ) compare una sola volta? se si come posso risolvere? avete una qualche idea? magari ottimizzando anche il codice facendolo senza il foreach se si può fare.



    Qualsiasi idea è ben accetta! Grazie mille in anticipo!
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  2. #2
    sono un cretino! mi complicavo la vita con una preg del genere quando ne bastava una lunga la metà:

    codice:
    $str=preg_replace("#(<% $sK %>)#s",$sV ,$str);


    ora non rimane che tentare di eliminare il foreach...avete qualche ideuzza?
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

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.