Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Problema Regex

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,317

    Problema Regex

    codice:
    [ LIST ][*] A[*] B[*] C
    [ / LIST ]
    preg_match_all( "#\
    [list\]\s*(\[\*\](.*?))+\s*\[/list\]#is", $text, $out);

    Vorrei selezionare in una array
    0 => [*] A
    1 => [*] B
    2 => [*] C

    Però non va...
    Ultima modifica di zacca94; 31-03-2014 a 17:33

  2. #2
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    ma sarebbe più semplice ripulire la stringa dei tag list e [*] sostituendoli con "" e poi usare explode ?
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,317
    Quote Originariamente inviata da ciro78 Visualizza il messaggio
    ma sarebbe più semplice ripulire la stringa dei tag list e [*] sostituendoli con "" e poi usare explode ?
    no impossibile, poi come farei in caso di <list> annidate, tag [*] sparsi in giro per il codice o bbcode mal inserito?

    comunque ho risolto in questo modo, posto il codice nel caso fosse d'aiuto a qualcuno:
    Codice PHP:
    <?php

        
    function parseCode2($text) {
            
            
    // regexp
            
    $regexp =     "/"                                                                                .
                        
    "(\
    [list\])"                                                                    
    .
                        
    "|"                                                                                .
                        
    "(\[\*\].*?\[\/\*\])"                                                            .
                        
    "|"                                                                                .
                        
    "(\[\/list\])"                                                                    .
                        
    "|"                                                                                .
                        
    "(\[code\])"                                                                    .
                        
    "|"                                                                                .
                        
    "(\[\/code\])"                                                                    .
                        
    "|"                                                                                .
                        
    "(\[quote(\s*=\s*(.*?){1}){0,1}\s*\])"                                            .
                        
    "|"                                                                                .
                        
    "(\[\/quote\])"                                                                    .
                        
    "/";
                        
            
    $code preg_split $regexp$text, -1PREG_SPLIT_DELIM_CAPTURE PREG_SPLIT_NO_EMPTY );
            
            
    //
            
    $text "";
            
    $open_list $closed_list $item_list $open_code $closed_code $open_quote $closed_quote 0;
            
            
    //
            
    while ($html array_shift$code )) {
                
    // <ul> tag
                
    if (preg_match("/\
    [list\]/"
    $html)) {
                    
    $open_list++;
                    
    $text .= "<ul>";
                }
                
                
    // <li> tag
                
    elseif (preg_match("/\[\*\](.*?)\[\/\*\]/"$html$return)) {
                    if (
    $open_list) {
                        
    $text .= "<li>{$return[1]}</li>";
                    }
                }
                
                
    // </ul> tag
                
    elseif (preg_match("/\[\/list\]/"$html)) {
                    
    $open_list--;
                    
    $text .= "</ul>";
                }
                
                
    // all
                
    else {
                    
    $text .= $html;
                }
            }
            
            
    // <b> tag
            
    $text preg_replace("/\[b\](.*?)\[\/b\]/""<b>\\1</b>"$text);
            
            
    // <u> tag
            
    $text preg_replace("/\[u\](.*?)\[\/u\]/""<u>\\1</u>"$text);
            
            
    // <i> tag
            
    $text preg_replace("/\[i\](.*?)\[\/i\]/""<i>\\1</i>"$text);
            
            
    // <img src=http://example.jpg> tag
            
    $text preg_replace("/\[img\](http|https|ftp){1}(:\/\/){1}(.*?)\[\/img\]/""<img src=\"\\1\\2\\3\" />"$text);
            
            
    // <span style='font-size:[value]pt;line-height:100%'>text</span> tag
            
    $text preg_replace("#\[size=([1-7]+)\](.+?)\[/size\]#is""<span style='font-size:\\1pt;line-height:100%'>\\2</span>"$text);

            
    // <span style='color:color;line-height:100%'>text</span> tag
            
    $text preg_replace("#\[color=(red|blue|purple|orange|yellow|gray|green)\](.+?)\[/color\]#is""<span style='color:\\1;line-height:100%'>\\2</span>"$text);

            
    // <span style='font-family:font>text</span> tag
            
    $text preg_replace("#\[font=(arial|times|courier|impact|geneva|optima)\](.*?)\[/font\]#is""<span style='font-family:\\1'>\\2</span>"$text);
            
            
    // <a href=mailto:example@domain.dot>click here</a> tag
            
    $text preg_replace"/\[email\](.*?)\[\/email\]/i""<a href='mailto:\\1'>\\1</a>"$text);
            
    $text preg_replace"#\[email\s*=\s*([\.\w\-]+\@[\.\w\-]+\.[\w\-]+)\s*\](.*?)\[\/email\]#is""<a href='mailto:\\1'>\\2</a>"$text);

            
    // <a href=http://www.google.it>click here</a> tag
            
    $text preg_replace("/\[url\](http|https|ftp){1}(:\/\/){1}(.*?)\[\/url\]/is""<a href=\"\\1\\2\\3\">\\1\\2\\3</a>"$text);
            
    $text preg_replace"#\[url\s*=\s*(http|https|ftp){1}(:\/\/){1}(.*?)\s*\](.*?)\[\/url\]#is""<a href=\"\\1\\2\\3\">\\4</a>"$text);
            
            
    // <a href=http://www.google.it>click here</a> tag
            
            
    echo $text;
        }
        
        
    $text "
        [b]b[/b]
        [i]i[/i]
        [u]u[/u]
        [size=7]dfsdfsfds[/size]
        [url=http://google.it]http://javascript:alert(document.cookie)[/url]
        [url]httdp://google.it[/url]
        [img]http://google.it/image.gif[/img]
        [email]admin@admin.it[/email]
        [size=7][color=red]LAL[/color][/size]
        [color=red]LAL[/color]
        [font=impact]asd[/font]
        
    [list]
            [*]asd[/*]
            [*]lol[/*]
        [/list]

                "
    ;
        echo 
    parseCode2($text);
    ?>

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.