Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2013
    Messaggi
    34

    Espressione regolari problema \

    Ciao a tutti voi del forum.
    Sto cercando di creare un'espressione regolare per acquisire l'id di una pagina da un tag <a> e salvarla in un array.
    Praticamente all'interno di un documento ho molti collegamenti ipertestuali che vanno all'home page, ma con diversi id. Avrei bisogno di acquisire tutti questi id e di salvarli in un array.

    I link mi arrivano in questo modo:
    <a href=\\\'http://www.sito.it/index.php?id=id\\\'>Home page</a>

    Quindi ho creato questa espressione
    $pattern = "<a href=\\\'http:\/\/www.sito.it\/index.php?id=([0-9]+?)\\\'>Home page<\/a>";
    preg_match($pattern, $testo_form, $matches, PREG_OFFSET_CAPTURE);
    print_r($matches);

    Il problema è che non funziona, credo che il problema siano i 3 \ inseriti prima dell'apice. Potete aiutarmi?

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Nel pattern parti da http invece che da <a e ti risparmi tutti i possibili problemi.

    Ad ogni modo per ogni \ ce ne devi mettere un altro davanti, quindi se davvero hai

    href=\\

    nel pattern dovresti mettere

    href=\\\\

    EDIT: non avevo notato che hai i \ anche alla fine, niente, raddoppiali nel pattern e dovrebbe andare.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2013
    Messaggi
    34
    Ciao, grazie mille per la risposta. Preferirei considerare tutto il tag così in futuro potrò lavorare anche sul testo del tag.
    Ad ogni modo sto provando con questo codice:

    Codice PHP:
     $pattern "/<a href=\\\\'http:\/\/www.sito.it\/index.php?id=([0-9]+)\\\\'>Home Page<\/a>/";
     
    $testo_form "<a href=\\'http://www.sito.it/index.php?id=1\\'>Home Page</a>";
     
    preg_match_all($pattern$testo_form$matchesPREG_OFFSET_CAPTURE);
     
    print_r($matches); 
    Ma non mi funziona...

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Sei sicuro che ti serva mettere href=\\'http ecc.. ?
    Non ti basta href='http ... ?

    il \ davanti al ' nella stringa devi mettercelo solo se usi ' anche per delimitare la stringa, ma tu usi "

    L'escape va anche di fronte ai . e al ?

    $pattern = "/<a href='http:\/\/www\.sito\.it\/index\.php\?id=(.*?)'>Home Page<\/a>/";
    $testo_form = "Home Page";
    preg_match_all($pattern, $testo_form, $matches, PREG_OFFSET_CAPTURE);
    print_r($matches);

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.