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

    [php]aiuto con espressione regolare

    avrei bisogno di un piccolo aiuto con un espressione regolare.
    avrei bisogno di convertire il testo color=\"#FF0000\" in style=\"color: #FF0000\" naturalmente il colore era solo un esempio, deve andar bene per ogni colore.

    io ho fatto un'espressione del genere:
    codice:
    $stringa = preg_replace("/(color=\\\"#)([a-fA-F0-9]{6})/ (\\\")", "style=\\\"color: #$2\\\"", $stringa);
    ma non mi funziona per niente, anzi, mi dà errore:
    Warning: Unknown modifier '(' in /.../edit_str.inc.php on line 25
    dove la riga 25 è quella.

    qualcuno mi dà una mano? grazie mille!
    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
    hai dimenticato la stringa di chiusura alla fine del pattern
    codice:
    "/(color=\\\"#)([a-fA-F0-9]{6})/ (\\\")/i"
    Chiamatemi sven se volete non ho voglia di fare una nuova email per una nuova registrazione xD
    Mac Future User , Ventilatore for PC Cooler user , - dry is coming -

  3. #3
    ok! una parte l'ho risolta, nel senso che avevo messo il terminatore di stringa non in fondo alla stringa

    la mia preg ora è così:
    codice:
    $stringa = preg_replace("/(color=\\\"#)([a-fA-F0-9]{6}) (\\\")/", "style=\\\"color: #$2\\\"", $stringa);
    non mi dà più l'warning ma continua a non funzionare, pur avendo verificato che il testo che vado a cercare esiste nella stringa di partenza...
    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

  4. #4
    [supersaibal]Originariamente inviato da bonaprogram
    hai dimenticato la stringa di chiusura alla fine del pattern
    codice:
    "/(color=\\\"#)([a-fA-F0-9]{6})/ (\\\")/i"
    [/supersaibal]
    abbiamo scritto insieme!

    intanto ti ringrazio per la risposta, purtroppo non è solo quello il problema, ci dev'essere qualcos'altro che non riesco a trovare!

    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

  5. #5
    codice:
    /(color=\\\"#)([a-fA-F0-9]{6})(\\\")/
    hai messo uno spazio di troppo, questo è corretto, testato
    Chiamatemi sven se volete non ho voglia di fare una nuova email per una nuova registrazione xD
    Mac Future User , Ventilatore for PC Cooler user , - dry is coming -

  6. #6
    grazie per le risposte ma non funziona!
    ho provato allora a togliere tutti quegli slash, facendo diventare la preg così [ ho notato che prima mi aggiungeva uno slash in più ]:
    codice:
    $stringa = stripslashes($stringa);
    $stringa = preg_replace("/(color=\\\"#)([a-fA-F0-9]{6})(\\\")/", "style=\\\"color: #$2\\\"", $stringa);
    ma niente!

    ho provato a far stampare la stringa prima della preg [ e dopo lo stripslashes ] ed infatti mi stampa:
    <font color=\"#ff00ff\">prppi</font>
    quindi a rigor di logica non dovrebbe funzionare?
    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

  7. #7
    codice:
    $stringa = "<font color=\"#FF99FF\">";
    $stringa = preg_replace("/(color=\\\"#)([a-fA-F0-9]{6})(\\\")/", "style=\\\"color: #$2\\\"", $stringa);
    echo $stringa;
    cosi a me funge
    Chiamatemi sven se volete non ho voglia di fare una nuova email per una nuova registrazione xD
    Mac Future User , Ventilatore for PC Cooler user , - dry is coming -

  8. #8
    dunque, l'esempio che hai postato tu funziona anche a me, ma il tuo esempio è leggermente diverso dal mio, questo è il risultato del tuo esempio:

    codice:
    <?
    $stringa = "<font color=\"#FF99FF\">";
    echo "stringa prima: ".htmlentities($stringa)."
    ";
    $stringa = preg_replace("/(color=\\\"#)([a-fA-F0-9]{6})(\\\")/", "style=\\\"color: #$2\\\"", $stringa);
    echo "stringa: ".htmlentities($stringa);
    ?>
    il primo echo [ stringa originale ] stampa:
    stringa prima: <font color="#FF99FF">

    mentre il mio echo [ la stringa che ho io di partenza ha anche il carattere di escape ]:
    <font color=\"#ff0000\">

    se io quindi ho di partenza questa stringa, come faccio ad ottenere quello che voglio?
    non so se sono riuscito a spiegarmi, ma con gli esempio spero di sì.
    ho provato a togliere quel maledetto slash con stripslashes, ma non cambia niente! anche perché lo slash non mi viene tolto!

    la mia stringa, quella originale ha 2slash!! io applico lo stripslashes e me ne toglie uno! se applico nuovamente stripslashes, perché non mi toglie anche il secondo?
    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

  9. #9
    ho risolto aggiungendo altri due slash alla preg

    codice:
    $stringa = preg_replace("/(color=\\\\\"#)([a-fA-F0-9]{6})(\\\\\")/", "style=\\\"color: #$2\\\"", $stringa);
    grazie!
    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.