• User

    Aiuto operazione stringa

    Come faccio a prendere da questa stringa qui sotto la stringa che ho selezionato in grassetto?

    ciafsdgfghsgbvtgl km mlksdtkbml [TAG]baubau[/TAG]dmng hjyjktfiuyokjhk


  • User Attivo

    Questa mi sembra la migliore:

    int strpos ( string haystack, mixed needle [, int offset] )
    
    Restituisce la posizione numerica della prima occorrenza di needle nella stringa haystack. Differentemente rispetto a strrpos(), questa funzione considera tutta la stringa needle, e, quindi, cercherà tutta la stringa. 
    
    Se needle non viene trovato strpos() restituirà boolean FALSE.
    

    [url=http://www.php.net/manual/it/function.strpos.php]strpos()

    Altrimenti fai da te: [url=http://www.php.net/manual/it/ref.strings.php]Stringhe
    :ciauz:


  • User

    @ico1989 said:

    Questa mi sembra la migliore:

    int strpos ( string haystack, mixed needle [, int offset] )
    
    Restituisce la posizione numerica della prima occorrenza di needle nella stringa haystack. Differentemente rispetto a strrpos(), questa funzione considera tutta la stringa needle, e, quindi, cercherà tutta la stringa. 
    
    Se needle non viene trovato strpos() restituirà boolean FALSE.
    

    [url=http://www.php.net/manual/it/function.strpos.php]strpos()

    Altrimenti fai da te: [url=http://www.php.net/manual/it/ref.strings.php]Stringhe
    :ciauz:

    allora nn offenderti eh ma se devi dare aiuto così meglio che non lo dai... guarda da te

    int strpos ( string haystack, mixed needle [, int offset] )
    

    INT quindi ritorna un intero nn certo la stringa che volevo ma la posizione. Inoltre le funzioni come forse sai non sono tutte e per quello che chiedo io sono necessari i regex


  • Super User

    @denadai2 said:

    allora nn offenderti eh ma se devi dare aiuto così meglio che non lo dai... guarda da te

    int strpos ( string haystack, mixed needle [, int offset] )
    

    INT quindi ritorna un intero nn certo la stringa che volevo ma la posizione. Inoltre le funzioni come forse sai non sono tutte e per quello che chiedo io sono necessari i regex
    forse voleva usare strpos in combinazione con strstr ma non è il caso... usa le espressioni regolari!

    preg_match_all('|[(TAG)](.+)[(TAG)]|iu', $pagliaio, risultati);

    non testata, l'ho scritta al volo... ma dovrebbe andare. Dai un'occhiata a:

    it.php.net/regex per le espressioni regolari POSIX-estesa ( sono lente... no te le consiglio );

    ed a:

    it.php.net/pcre per le espressioni regolari PERL-compatibili.


  • User

    @PaTeR said:

    forse voleva usare strpos in combinazione con strstr ma non è il caso... usa le espressioni regolari!

    preg_match_all('|[(TAG)](.+)[(TAG)]|iu', $pagliaio, risultati);

    non testata, l'ho scritta al volo... ma dovrebbe andare. Dai un'occhiata a:

    it.php.net/regex per le espressioni regolari POSIX-estesa ( sono lente... no te le consiglio );

    ed a:

    it.php.net/pcre per le espressioni regolari PERL-compatibili.

    perfetto.. con una piccola modifica va (ti eri dimenticato il /TAG chiuso.. cmq il problema ora mi si prensenta se nel pagliaio ci sono più tag e io devo modificare ognuno di essi 😞


  • User Attivo

    Allora credo di non aver capito qual è il tuo obiettivo..

    @denadai2 said:

    Come faccio a prendere da questa stringa qui sotto la stringa che ho selezionato in grassetto?

    ciafsdgfghsgbvtgl km mlksdtkbml [TAG]baubau[/TAG]dmng hjyjktfiuyokjhk
    :mmm:


  • Super User

    se vuoi leggere quanto sta racchiuso tra i tag l'unica strada "comoda" è l'espressione regolare.

    il "comoda" è preceduto da un buono studio :ciauz:


  • User Attivo

    @denadai2 said:

    perfetto.. con una piccola modifica va (ti eri dimenticato il /TAG chiuso.. cmq il problema ora mi si prensenta se nel pagliaio ci sono più tag e io devo modificare ognuno di essi 😞

    se devi modificarli forse puoi usare la funzione preg_replace

    ora però devi specificare meglio cosa devi fare


  • Super User

    @denadai2 said:

    perfetto.. con una piccola modifica va (ti eri dimenticato il /TAG chiuso.. cmq il problema ora mi si prensenta se nel pagliaio ci sono più tag e io devo modificare ognuno di essi :(eh si scusami mi ero dimenticato...

    Non capisco la tua seconda richiesta...


  • User

    parto con il dire che nn riesco a capire come fare 😄 le espressioni regolari nn le capisco molto (so quelle basilari... ho fatto il rewrite in apache)

    cmq ho visto una dozzina di siti e nn riesco.

    Il mio scopo è modificare una stringa tra i tag [TAG] e [/TAG] in modo da fare il syntax highlighting.

    Per fare ciò devo modificare la stringa e richiamare una funzione di una libreria esterna.

    Io vi sto chiedendo come prendere quella stringa sapendo che i tag possono essere più di uno a pagina. (di conseguenza serve un'espressione regolare che funzioni sempre, sia con 0 tag, sia con 1 sia con 1000)

    Grazie spero di essermi spiegato perchè sto sbattendo la testa sul muro :arrabbiato:


  • Super User

    @denadai2 said:

    parto con il dire che nn riesco a capire come fare 😄 le espressioni regolari nn le capisco molto (so quelle basilari... ho fatto il rewrite in apache)

    cmq ho visto una dozzina di siti e nn riesco.

    Il mio scopo è modificare una stringa tra i tag [TAG] e [/TAG] in modo da fare il syntax highlighting.

    Per fare ciò devo modificare la stringa e richiamare una funzione di una libreria esterna.

    Io vi sto chiedendo come prendere quella stringa sapendo che i tag possono essere più di uno a pagina. (di conseguenza serve un'espressione regolare che funzioni sempre, sia con 0 tag, sia con 1 sia con 1000)

    Grazie spero di essermi spiegato perchè sto sbattendo la testa sul muro :arrabbiato:

    preg_replace("|[(TAG)](.+)[/(TAG)]|iu", "<a style='border=1px;'>//1</a>", $pagliaio);

    Dovrebbe funzionare... Sennò prova con

    preg_replace("|[(TAG)](.+)[/(TAG)]|iu", "<a style='border=1px;'>//2</a>", $pagliaio);

    Ciaooo!


  • User

    @PaTeR said:

    preg_replace("|[(TAG)](.+)[/(TAG)]|iu", "<a style='border=1px;'>//1</a>", $pagliaio);

    Dovrebbe funzionare... Sennò prova con

    preg_replace("|[(TAG)](.+)[/(TAG)]|iu", "<a style='border=1px;'>//2</a>", $pagliaio);

    Ciaooo!

    no non ci siamo ancora 😄 io voglio la stringa contenuta da i tag, non voglio sostituire qualcosa a [TAG] e [/TAG]

    hai per caso capito?


  • User

    grazie a chi ha tentato almeno di aiutare tipo pater 🙂

    $output='&#123;html&#125;** some html **&#123;/html&#125;';
    
    
    
    $languages = array&#40;'php', 'css', 'html4strict', 'c'&#41;;
    
    foreach &#40; $languages as $language &#41;
    &#123;
      $regex = "#\&#123;$language\&#125;&#40;.*?&#41;\&#123;/$language\&#125;#smiU";
      preg_match_all&#40;$regex, $output, $codes&#41;;
    
      for &#40; $i = 0; $i < count&#40;$codes&#91;0&#93;&#41;; $i++&#41;
      &#123;
        $geshi = new GeSHi&#40;$codes&#91;1&#93;&#91;$i&#93;, $language, 'lib/geshi'&#41;;
        $output = str_replace&#40;$codes&#91;0&#93;&#91;$i&#93;, $geshi->parse_code&#40;&#41;, $output&#41;;
        unset&#40;$geshi&#41;;
      &#125;
    &#125;
    
    echo $output;
    

  • Super User

    Mi spieghi un pò cosa volevi fare? Un esempio pratico sarebbe perfetto... Così vedo dove ho sbagliato! eheheh


  • User

    @PaTeR said:

    Mi spieghi un pò cosa volevi fare? Un esempio pratico sarebbe perfetto... Così vedo dove ho sbagliato! eheheh

    prova il codice che ho postato e vedrai 😄

    scarica geshi da qui http://qbnz.com/highlighter/

    magari ti può tornare pure utile :ciauz:


  • Super User

    @denadai2 said:

    prova il codice che ho postato e vedrai 😄

    scarica geshi da qui http://qbnz.com/highlighter/

    magari ti può tornare pure utile :ciauz:Ah ok! Cmq grazie!


  • User Attivo

    @denadai2 said:

    no non ci siamo ancora 😄 io voglio la stringa contenuta da i tag, non voglio sostituire qualcosa a [TAG] e [/TAG]

    hai per caso capito?

    per quel che vale...
    mi sembra che il codice postato da Pater facesse quello che volevi. Infatti non sostituisce i tag, ma ne inserisce uno interno con uno stile particolare...

    Cmq ora hai risolto, meglio così...

    ciao