Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Cercare stringa dentro una stringa (particolare)

    Ho una lunga stringa dove devo cercare una o più stringhe al suo interno.

    La stringa che devo cercare non la conosco, però so cosa ci sarà sempre prima e so cosa ci sarà sempre dopo.
    Nella pratica devo trovare il nome di immagini dentro una stringa, so che prima del nome troverò ([img]/cartella/) e alla fine (.jpg[/img])

    E dunque ho fatto questo script, che funziona, ma... solo se ho un tipo di immagine
    non riesco a costruire una con dizione anche per le (.gif">) o anche per le (.png">)


    Codice PHP:
    <?php 
    $stringa 
    'bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla 
    [b][img]/cartella/[/b]ABC-91530-lg[b].jpg[/img][/b]bla bla bla bla bla bla bla 
    bla bla bla bla bla bla bla[b][img]/cartella/[/b]788888[b].jpg[/img][/b] bla bla bla bla'
    ;

    $i 1;
    $lun strlen($stringa);
    while(
    $lun 0){

    $pos1 strpos($stringa'<img src="/cartella/') +20//trovo la prima posizione e aggiungo la sua lunghezza
    $pos2 strpos($stringa'.jpg">') +4//trovo la seconda posizione e aggiungo la sua lunghezza

    $pos3 $pos2 $pos1//Trovo la lunghezza della stringa che voglio

    $var[$i] = substr($stringa$pos1$pos3); //Assegno all'array il valore della stringa trovata

    // Stampo per controllo
    echo $var[$i].'
    '
    ;

    $i++;

    $stringa substr($stringa$pos2); //Tolgo dalla ricerca la parte del testo già controllato
    $lun strlen($stringa); //Assegno la lunghezza residua per il controllo del ciclo
    }
    ?>
    Come posso controllare la stringa anche con altri tipi di immagini?

    Se avete una soluzione diversa meglio!


    Grazie

    oaiC

  2. #2
    Come andare da roma milano pensando di arrivare priama passando per marte.
    Fai parte dell'ufficio complicazione affari semplici?

    Sto scherzando ovviamente :P

    Non ti offendere XD Come ho detto nel post di prima è l'ra tarda...forse >_>

    Ti consiglio di usa le preg. Le preg sono funzioni che emulano le espressione regolari di perl, perchè in perl sono molto potenti.
    Risolvono il tuo e problemi anche mille volte più complessi.
    Sto cercando la pagina con le spiegazioni...


    sembra che l'abbia trovato...

    ... http://www.php.net/manual/it/function.preg-match.php
    http://www.php.net/manual/it/functio...-match-all.php

    Le guida non è molto chiara.
    Io mi trovato bene col perl, il php fa un po' di cosino ma alla fine le funzioni che ti servono le scrivi.
    Guarda anche nei commenti in fondo pagina che ti aiutano.
    Ah ecco, ho capito perchè la guida spiegava male, c'è la guida per usare tutte le funzioni di preg:
    http://www.php.net/manual/it/referen...ern.syntax.php
    In pratica è una guida con le sintassi.
    Studiala bene se vuoi programmare perchè le espressioni regolari sono fondamentali, o quanto meno ti troverai ad usarle molte volte

    Ciao

    EDIT:
    Se hai problemi con le funzioni o non capisci qualcosa dicci pure^^
    Ciao
    ...

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    460
    Ti consiglio di usare un parser DOM per fare quella roba. Con getElementsByTagName e getAttribute si fa in 0.01 secondi.
    There are 10 types of people in the world - those who understand binary and those who don't.

  4. #4
    Originariamente inviato da LordSaga640
    Se hai problemi con le funzioni o non capisci qualcosa dicci pure^^
    Ecco, sto tentanto di fare un semplice recupero ma non mi riesce

    Codice PHP:
    preg_match("/^(cartella\/)?([^\">]+)/i",'bla[img]/cartella/123123.jpg[/img] bla',$out);
    echo 
    $out[2]; 



    Originariamente inviato da
    frinkia

    Ti consiglio di usare un parser DOM per fare quella roba. Con getElementsByTagName e getAttribute
    Mi puoi fare un esempio o postarmi un link dove se ne parla, ho cercato l'argomento ma non ho trovato molto che potessi capire




    Grazie

    oaiC

  5. #5
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Prova questo.

    codice:
    <?php 
    $stringa = 'bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla [img]/cartella/ABC-91530-lg.jpg[/img]bla bla bla bla bla bla bla bla bla bla bla bla bla bla[img]/cartella/788888.jpg[/img] bla bla bla bla';
    preg_match_all("|/cartella/([^\">]+)|i",$stringa,$out);
    print_r($out[1]);
    ?>
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  6. #6
    Grazie badaze (anche a gli altri!!!)

    Funziona!

    Volevo capire una cosa, / che funzione ha? E' un metacaretteri come gli altri? Non è un carettere di escape (\)

    Per esempio viene usato qui
    (/^(http...../i)

    Codice PHP:
    <?php
    // come ottenere il nome dell'host da un URL
    preg_match("/^(http:\/\/)?([^\/]+)/i",
    "http://www.php.net/index.html"$matches);
    $NomeHost $matches[2];
    // come ottenere gli ultimi due segmenti del nome dell'host
    preg_match("/[^\.\/]+\.[^\.\/]+$/",$NomeHost,$matches);
    echo 
    "Nome del dominio:  {$matches[0]}\n";
    ?>

    E' che non mi piace risolvere le cose senza capire come...


    oaiC

  7. #7
    Originariamente inviato da Ugly Mau
    Grazie badaze (anche a gli altri!!!)

    Funziona!

    Volevo capire una cosa, / che funzione ha? E' un metacaretteri come gli altri? Non è un carettere di escape (\)

    Per esempio viene usato qui
    (/^(http...../i)

    Codice PHP:
    <?php
    // come ottenere il nome dell'host da un URL
    preg_match("/^(http:\/\/)?([^\/]+)/i",
    "http://www.php.net/index.html"$matches);
    $NomeHost $matches[2];
    // come ottenere gli ultimi due segmenti del nome dell'host
    preg_match("/[^\.\/]+\.[^\.\/]+$/",$NomeHost,$matches);
    echo 
    "Nome del dominio:  {$matches[0]}\n";
    ?>

    E' che non mi piace risolvere le cose senza capire come...


    oaiC
    le / .. / servono per contenere il testo da ricercare.
    La -i- dopo la / serve per indicare al motore che deve considerare valida l'espressione sia che i caratteri siano maiuscoli che minuscolo. Ossia diventa case iinsensitive.

    Le / / derivano da perl.
    $variabile="Alfa beta gamma";
    if($variabile=~ /alfa (.+?) (.+)/i) {
    print "Contiene alfa, e dopo alfa c'è $1 e $2\n";
    }

    PERL 4EVER! The Immortal Code!
    ...

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.