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

    espressioni regolari: cancelletto

    Ma il carattere cancelletto che fastidio dā alle regexp?!

    Non riesco a fare questa, semplice spero, cosa:
    href="#", href="prova.php", href="/dir/pagina.ext"
    devono diventare
    href="/mappe/allegati.php"

    Ma diavolo non riesco!
    stavo provando
    $valore=eregi_replace('href="(.)+"', 'href="/mappe/allegati.php"', $valore);
    ma non funzia.

    HELLLLLPPPP!!!

  2. #2

  3. #3
    ce riprovo: uppete

  4. #4
    Ennesimon upparellino

  5. #5
    Provo a riformulare la domanda, evidentemente non ha avuto molto successo.

    Quale espressione regolare utilizzereste per prendere il contenuto di href="[tutto quello che ci sta qui]" e sostituirlo, ad esempio, come href="#" ???

  6. #6
    Prova in questo modo:
    Codice PHP:
    eregi_replace('href="([^"]+)"''href="/mappe/allegati.php"'$valore); 
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  7. #7
    Grazie per l'aiuto, ma purtroppo non funziona, non mi sostituisce niente.
    Dove sta il problema?!

  8. #8
    Alla fine ho capito che sono le virgolette che danno fastidio all'espressione, perchč fintanto che non le utilizzo tutto bene, quando poi le inserisco, in ogni formula testata (e sono tante) bloccano tutto.
    Posso mettere '"' oppure "\" oppure '\"' in ogni caso non funzia.

    Come gestisco quindi le virgolette DENTRO le espressioni regolari?!

  9. #9
    Utente di HTML.it L'avatar di M4rko
    Registrato dal
    Dec 2000
    Messaggi
    619
    In linea di massima sono preferibili le funzioni preg_* piuttosto che ereg*, per questioni di prestazioni

    codice:
    $str1 = 'href="#"';
    $str2 = 'href="prova.php"';
    $str3 = 'href="/dir/pagina.ext"';
    
    echo "Str1: " . preg_replace('/href="[^"]+"/i', 'href="/mappe/allegati.php"', $str1) . "\n";
    echo "Str2: " . preg_replace('/href="[^"]+"/i', 'href="/mappe/allegati.php"', $str2) . "\n";
    echo "Str3: " . preg_replace('/href="[^"]+"/i', 'href="/mappe/allegati.php"', $str3) . "\n";
    La sintassi č leggermente diversa ma il succo non cambia

    Nel caso delle preg_* hai la funzione preg_quote() per fare l'escape dei caratteri speciali.. e le virgolette non rientrano tra questi

    Tutti hanno bisogno di credere in qualcosa.
    Io credo che mi farō un'altra birra.


  10. #10
    Okay, grazie a tutti... in realtā probabilmente funzionavano anche le ipotesi sopra esposte... (forse non tutte...). Il problema era che la stringa di partenza era backslashata... mi č bastato fare un stripslashes() prima di passarla alla funzione regexp per correggere tutto...

    CIAO

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.