Journal Probleme avec le detecteur d'url

Posté par  .
Étiquettes : aucune
0
7
avr.
2004
Sur la tribune on peut taper des urls à la con comme
http://.(...)
http://::::::::::@@@@@.........@@@@@:::::::.com(...)
http://@.@(...) <-jolie celle là :)
http://:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/:/(...)
Je suis en train d'essayer d'écrire une regexp qui va bien pour les parser correctement mais c'est pas évident ? J'ai l'impression que cette erreur est présente sur tous les bouchots.

Quelqu'un pour confirmer ?

PS : C'est un journal déguisé pour voir si le journal va croire que mes fausses urls sont correctes.
PS2 : Et oui je viens de voir à la verification que c'est gruick ici aussi
  • # Re: Probleme avec le detecteur d'url

    Posté par  . Évalué à 1.

    Ca vous plait ?
    Si quelqu'un a une regexp bien solide pour parser les urls ça serais sympa qu'il la partage ici.
  • # Re: Probleme avec le detecteur d'url

    Posté par  (site web personnel) . Évalué à 1.

    C'est quoi le problème de pouvoir taper ces url ?
    • [^] # Re: Probleme avec le detecteur d'url

      Posté par  . Évalué à 1.

      Le problème c'est que ce ne sont pas des urls. On doit donc pouvoir les taper, mais elle ne doivent pas être reconnus comme urls, et donc ne pas être clickable. Le principe d'un detecteur d'url c'est de detecter les urls et pas autre chose ahma. C'est pas très propre là.
  • # Re: Probleme avec le detecteur d'url

    Posté par  . Évalué à -9.

    t'en as pas marre, apres la tribune, les journaux, balance une news tant que tu y es . On en a un peu rien a foutre de ce genre d'url, c'est pas dur des les corrigés a la main
    • [^] # Re: Probleme avec le detecteur d'url

      Posté par  . Évalué à 8.

      Keep cool. Y'a pas de mal à remonter un bug. Ici c'est un site communautaire, c'est bien que tout le monde mette les mains à la patte pour corriger des problêmes.

      Je suis en train d'essayer de trouver une soluce et je demande si quelqu'un n'a pas déja ça sous la main. Surtout que ça ne touche pas que linuxfr mais des tas d'autres sites. C'est peut être pas un problême pour toi (je trouve pas ça grave non plus, rassure toi) mais ça fait pas de mal une petite amelioration (correction ?).

      C'est le journal en premiére page qui te dérange ? Ca concerne le site donc surement du monde, c'est donc mieux que je le montre à tous plutot que de le mettre en journal privé. Je finir par croire que y'a plus de place que pour notre vénérable Pierre Tramo dans les journaux...
  • # Re: Probleme avec le detecteur d'url

    Posté par  . Évalué à 2.

    Toutes ne sont pas vraiment des URL fausses.

    Et puis clique dessus avec Mozilla, il te dira 'the URL is not valid blablabla'. Donc y'a une détection dans Mozilla.

    Et sinon bah y'a certainement une RFC qui définit la bonne forme des URLs. Maintenant, va implémenter une bonne détection complète, ca va être méga lourd. Alors qu'actuellement il y a une "simple" regex connue qui marche à peu près bien.
  • # Re: Probleme avec le detecteur d'url

    Posté par  (site web personnel) . Évalué à 5.

    Je sais pas si elle marche vraiment bien mais yen a d'autres sur le même site.

    http://www.regexp.org/msg.php?uid=486(...)

    pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

    • [^] # Re: Probleme avec le detecteur d'url

      Posté par  . Évalué à 1.

      Sympa ce site, merci pour le lien.
    • [^] # Re: Probleme avec le detecteur d'url

      Posté par  (site web personnel) . Évalué à 2.

      Je l'ai un peu changée et elle passe à merveille :

      ((((new|(ht|f)tp)s?://){1}([a-z0-9_-]+:[a-z0-9_-]+\@)?((www|ftp|[a-z0-9]+(-\+[a-z0-9])*)\.)?)([a-z0-9]+(\-+[a-z0-9]+)*[\.]?)+([a-z]{2,7})?(:\d+)?(/~[a-z0-9_%\-]+)?(/[a-z0-9_%.-]+(?=/))*
      (/[a-z0-9_%-]+(\.[a-z0-9]+)?(\#[a-z0-9_.]+)?)*(/?\?([a-z0-9_.%-]+)=[a-z0-9_.%/-]*)?(&([a-z0-9_.%-]+)=[a-z0-9_.%/-]*)*/?)

      testé sur ma tribune :

      http://arrakis-lan.homelinux.org/board/index.do(...)
      • [^] # Re: petit changement

        Posté par  (site web personnel) . Évalué à 2.

        voilà celle-ci marche mieux encore :

        ((((new|(ht|f)tp)s?://){1}([a-z0-9_-]+:[a-z0-9_-]+\@)?((www|ftp|[a-z0-9]+(-\+[a-z0-9])*)\.)?)([a-z0-9]+(\-+[a-z0-9]+)*[\.]?)+
        ([a-z]{2,7})?(:\d+)?(/~[a-z0-9_%\-]+)?(/[a-z0-9_%.-]+(?=/))*(/[a-z0-9_%-]+(\.[a-z0-9]+)?(\#[a-z0-9_.]+)?)*
        (/?\?([a-zA-Z0-9_.%-]+)=[a-zA-Z0-9\|;_.%/-]*)?(&amp;([a-zA-Z0-9_.%-]+)=[a-zA-Z0-9\|_.;%/-]*)*/?)
        • [^] # Re: petit changement

          Posté par  (site web personnel) . Évalué à 2.

          et de 3:

          ((((new|(ht|f)tp)s?://){1}([a-zA-Z0-9_-]+:[a-zA-Z0-9_-]+\@)?((www|ftp|[a-zA-Z0-9]+(-\+[a-zA-Z0-9])*)\.)?)
          ([a-zA-Z0-9]+(\-+[a-zA-Z0-9]+)*[\.]?)+([a-z]{2,7})?(:\d+)?(/~[a-zA-Z0-9\._%\-]+)?(/[a-zA-Z0-9\._%.-]+(?=/))*
          (/[a-zA-Z0-9\._%-]+(\.[a-zA-Z0-9]+)?(\#[a-zA-Z0-9_.]+)?)*(/?\?([a-zA-Z0-9_.%-]+)=[a-zA-Z0-9\|;_.%/-]*)?
          (&amp;([a-zA-Z0-9_.%-]+)=[a-zA-Z0-9\|_.;%/-]*)*/?)
          • [^] # Re: petit changement

            Posté par  (site web personnel) . Évalué à 2.

            Version (normalement finale) après quelques jours de test de la regexp :

            ([^(µµ)]|^)((((new|(ht|f)tp)s?://){1}([a-zA-Z0-9_-]+:[a-zA-Z0-9_-]+\@)?((www|ftp|[a-zA-Z0-9]+
            (-\+[a-zA-Z0-9])*)\.)?)([a-zA-Z0-9]+(\-+[a-zA-Z0-9]+)*[\.]?)+([a-z]{2,7})?(:\d+)?(/~[a-zA-Z0-9\._%\-]+)?
            (/[a-zA-Z0-9\._%.-]+(?=/))*(/[a-zA-Z0-9\._%-]+(\.[a-zA-Z0-9]+)?(\#[a-zA-Z0-9_.]+)?)*(/?[\?]?
            ([a-zA-Z0-9_\.%-\|;\:]*)[=]?[a-zA-Z0-9\|;\._%-\:]*)?([&amp;|/]([#;a-zA-Z0-9_.%-\:\|]*)[=]?[a-zA-Z0-9\|_.;%-]*)*/?)
      • [^] # La regexp Finale ?

        Posté par  (site web personnel) . Évalué à 2.

        (^|\s)((((new|(ht|f)tp)s?://){1}([a-zA-Z0-9_-]+:[a-zA-Z0-9_-]+\@)?(([a-zA-Z0-9]+(-\+[a-zA-Z0-9])*)\.)?)([a-zA-Z0-9]+(\-+[a-zA-Z0-9]+)*[\.]?)+([a-z]{2,7})?
        (/[\~a-zA-Z0-9\.\:\|;_%\-&&[^<>]]*)*((\?|&amp;)([a-zA-Z0-9_\.%-\|;\:\-&&[^<>]]*)[=]?[a-zA-Z0-9\|;\._%-\:\-&&[^<>]]*)*
        (\#[a-zA-Z0-9_\.\-&&[^<>]]+)?)
  • # Re: Probleme avec le detecteur d'url

    Posté par  (site web personnel) . Évalué à 1.

    Je vois vraiment pas le problème.

    Ya aussi beaucoup de posts avec des fautes d'orthographe, mais ya personne qui en fait tout un fromage parce qu'il y a des mots qui sont faux et qui donc, selon ta logique, ne devraient même pas apparaitre à l'écran.
    • [^] # Re: Probleme avec le detecteur d'url

      Posté par  (site web personnel) . Évalué à 2.

      Faisons passer tous les posts par ispell !

      La différence c'est qu'en Français tu peux facilement inventer des néologismes "valables" qui ne sont pas dans le dictionnaire et qu'aucun programme ne pourra reconnaitre comme tel (ou alors faut vraiment s'amuser). Pour les URL (URI ?), il y a une syntaxe bien précise justement pour que ça soit interprétable par un programme et donc tu peux objectivment déterminer si l'URL est valable ou non rien qu'en regardant la syntaxe.

      Ceci dit, le passage par ispell à la prévisualisation ça pourrait être intéressant. Je crois que j'ai déjà vu ça quelque part d'ailleurs. Dans le slashcode peut-être.

      pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

  • # Re: Probleme avec le detecteur d'url

    Posté par  (site web personnel) . Évalué à 2.

    Hors sujet mais un petit peu plus de perl sur DLFP !
    Je l'avais déjà envoyé il y a un an ... et on m'a dit que c'était en cours

    3 parties :
    - un script perl "spellcheck", renvoie une liste des mots faux et les propositions
    - le javascript en html, certain caractères doivent être nettoyés avant d'être transmis à ispell
    - une page html en mod_perl/mason (adaptable en php) qui appelle le script perl et affiche

    ===spellcheck====
    #!/usr/bin/perl -w

    $| = 1;

    use Lingua::Ispell qw( spellcheck );
    use strict;

    my @result;
    my @prop;
    #Lingua::Ispell::use_dictionary("french");

    while ( <> ) {
    chomp;
    my $line = $_;

    for my $r ( spellcheck( $line ) ) {

    if ( $r->{'type'} ne 'ok' ) {
    push (@result,"$r->{'term'}"); };

    if (defined(@{$r->{'misses'}})) {
    foreach my $term (@{$r->{'misses'}}) {
    push (@prop,"$term");
    }
    }

    }
    }

    foreach my $line (@result) {
    print "$line\n";
    }
    print "---\n";

    foreach my $line (@prop) {
    print "$line\n";
    }

    ===javascript==
    <script type="text/javascript">
    function help() {
    var winhelp = window.open('','aide','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=400,height=200');
    winhelp.focus();
    }

    function ispell() {
    var str;
    str=document.forms[0].col.value;

    str = str.replace(/\n/g," ^ ");
    str = str.replace(/\&/g,"");
    str = str.replace(/~R/g,"'");
    str = str.replace(/~\/g,"oe");
    str = str.replace(/~Q/g,"'");
    str = str.replace(/~S/g,"\"");
    str = str.replace(/~T/g,"\"");
    var url="ispell.html?text=" + str;
    var winispell = window.open(url,'ispell','height=400,width=400,scrollbars=yes,dependent')
    winispell.focus();
    }

    </script>

    ======ispell.html====
    <table width=100%>
    <TR><TD>
    <% $text %>
    </TD>
    </TR>
    </TABLE>
    <HR noshade>
    <PRE>
    <% @prop %>
    </PRE>

    <%args>
    $text=>""
    </%args>

    <%init>
    my $dir=$m->fetch_comp("ispell.html")->source_dir;

    $text=~s/\*|\\||_|<|>|;|\%|\"//g;

    my @res=`echo "$text" | $dir/spellcheck`;

    my @prop; my $fprop=0;
    foreach my $change (@res) {
    chomp($change);
    $fprop=1 if ($change =~ /^---/);
    if ($change !~ /^---/ && !$fprop) {
    $text=~s/$change/<font color=red>$change<\/font>/gi;
    } else {
    push (@prop,"$change\n"); }
    }

    $text=~s/ \^/<BR>/g;

    </%init>

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.