Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    111

    [regex] estrapolare un link, errore nell'espressione

    salve a tutti, sono alle prime armi con le espressioni regolari, e non riesco a capire perchè questa non funzioni:

    /(http\:\/\/|https\:\/\/|ftp\:\/\/)([^\"]*?)[\s\n\t$\z\"\[\]\<\>]/is

    il mio intento è quello di catturare un link da una stringa.
    il problema dovrebbe stare nell'ultimo blocco di codice, quello evidenziato in verde. ho ottenuto risultati migliori usandolo come una positive lookahead, ma il codice fallisce a trovare il termine del link.

    (?=\s|\n|\t|$|\z|\"|\[|\]|\<|\>)

    ad esempio se alla fine del link sono presenti gli apici ", questi vengono considerati parte del link. usare ?: all'inizio del blocco non risolve il problema.. non capisco

  2. #2
    segnati questo link che ti sarà utile...qui trovi di sicuro quello che vuoi fare..da li prendi spunto

    http://regexlib.com/
    Luca Bottoni's World
    www.bottonisworld.com

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    111
    grazie

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    111


    ho modificato il codice così, che mi pare un po' migliore, ma il problema rimane quando lo eseguo sul mio server

    (??<!href\=\"|value\=\"|src\=\"|\[url\=))(?:\[url\])?((?:mailto\:|(?:news|(?:ht|f)tp(?:s?))\:\/\/)[^\"\s]{4,}?)(?:\[\/url\]|(?=\s|\n|\t|\z|\"|$|\[|\]|\<|\>|\,))

    il bello è che il pattern funziona con tutti gli engine regex che ho provato online

    in passato avevo già trovato pesanti limitazioni nell'uso del lookaround delle librerie PCRE di php. ma che non sia nemmeno in grado di trovare un carattere alla fine di una stringa mi pare un poco eccessivo no?

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    111
    anzi, il lookaround non funziona affatto!
    il pattern non dovrebbe fare il match con gli indirizzi che seguono un campo href=".. e invece se ne infischia!

    non è possibile!!

  6. #6
    le regexp sono toste..se fai un parsing di un documento non conviene usare DOM?
    Luca Bottoni's World
    www.bottonisworld.com

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    111
    cioè con javascript?

    eh si lo potrei fare.. ma preferirei usare il server

  8. #8
    http://pb11.php.net/manual/it/ref.domxml.php

    ci sono classi che aiutano in PHP il parsing della pagina come se lavorassi in js
    Luca Bottoni's World
    www.bottonisworld.com

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    111
    a dir la verità non capisco..

    in pratica ho realizzato un sistema bbcode per il mio blog e uso le espressioni regolari per sostituire i tag bbcode con tag html. funziona tutto benone, solo che mi piacerebbe avere un pattern per riconoscere anche gli URL sparsi nel testo senza tag bbcode. niente di astruso, se non che per avere un pattern efficace devo usare il lookaround (che sarebbero i costrutti ?=, ?!, ?<=, ?<!), ma questi non funzionano.
    e questo è il problema.
    io pensavo che l'errore fosse nel pattern che avevo creto, invece sembra essere nelle librerie PCRE

  10. #10
    fai attenzione che il ? fà parte delle regole delle esprerssioni e deve esse preceduto dal backslashe \
    Luca Bottoni's World
    www.bottonisworld.com

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.