Visualizzazione risultati 1 fino 9 di 9

Discussione: [REGEX]Contenuti dentro div

  1. #1
    Guest

    Predefinito [REGEX]Contenuti dentro div

    Salve,
    non sto riuscendo a catturare tutto l'html di un div.

    Codice PHP:
    preg_match_all('#<div id="post_message_(.*)">[\s]*(.*)<\/div>#i',$data,$rows);
    Funziona, ma se il div contiene una semplice riga di testo (sena a capo), se c'è html vario e caratteri di a capo l'array è vuota o troncata (funziona male in sostanza).

    Spero qualcuno m'illumini.

  2. #2
    programmazioned non è connesso Utente attivo
    Data registrazione
    25-03-2008
    Messaggi
    440

    Predefinito

    È Perchè il "." non include il newline tra i caratteri matchati, a meno che non lo specifichi con il modificatore s:

    Codice PHP:
    preg_match_all('#<div id="post_message_(.+)">(.*)<\/div>#si',$data,$rows);
    Ciao!
    Ultima modifica di programmazioned : 06-01-2010 alle ore 18.14.55

  3. #3
    Guest

    Predefinito

    Va meglio ma ancora non ci siamo, grazie intanto.

  4. #4
    programmazioned non è connesso Utente attivo
    Data registrazione
    25-03-2008
    Messaggi
    440

    Predefinito

    In che senso? Cosa c'è che non va?

  5. #5
    Guest

    Predefinito

    S'incasina uguale, sto provando adesso ad usare :
    Codice PHP:
    preg_match_all('#<!-- message -->(.*)<!-- / message -->#si',$data,$rows);
    Ma con tutto quel codice html pare che dia problemi anche questa...


    Con JQuery si risolve alla grande, riesco a prelevare l'html, però m'interessava con php.
    Ultima modifica di svacant : 05-01-2010 alle ore 21.43.33

  6. #6
    L'avatar di ptm
    ptm
    ptm non è connesso Utente
    Data registrazione
    04-08-2007
    Residenza
    Bergamo
    Messaggi
    124

    Predefinito

    Così dovrebbe andare
    Codice PHP:
    preg_match_all('#<div id="post_message_.*?">(.*?)<\/div>#is',$data,$rows);

  7. #7
    Guest

    Predefinito

    Citazione Originalmente inviato da ptm Visualizza messaggio
    Così dovrebbe andare
    Codice PHP:
    preg_match_all('#<div id="post_message_.*?">(.*?)<\/div>#is',$data,$rows);
    Si funge, sai che ste regex mi piacciono :), però sono il mio punto debole.
    Intanto grazie mille

    edit: certo l'unico problema è quando c'è un div dentro...
    Ultima modifica di svacant : 07-01-2010 alle ore 21.16.21

  8. #8
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Citazione Originalmente inviato da svacant Visualizza messaggio
    edit: certo l'unico problema è quando c'è un div dentro...
    Temo che i problemi si faranno sentire con queste strutture:
    Codice HTML:
    <div id="post_message_12345">
    ...
    <div>
    ...
    </div>
    ...
    </div>
    Quella regexp dovrebbe fermarsi al primo tag di chiusura, ignorando la parte finale del DIV che ti serve.

    Se vuoi un approccio preleva-HTML anche in PHP, hai mai pensato ad usare la classe DOMDocument? Carichi il file con il metodo loadHTML (in realtà legge una stringa, che puoi ottenere dal file con file_get_contents). Otterai quindi la stessa struttura ad albero del DOM di JavaScript, che puoi navigare con i metodi della classe DOMNode, che sono del tutto analoghi a quelli di JavaScript.

    Spero di averti dato qualche dritta... stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  9. #9
    Guest

    Predefinito

    Adesso sono più contento :D http://code.google.com/p/phpquery/

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •