Visualizzazione dei risultati da 1 a 6 su 6

Discussione: estrarre sottostringa

  1. #1

    estrarre sottostringa

    ciao a tutti,
    volevo chiedervi se conoscete una funzione
    che permette di estrarre da un a stringa solo le sotto stringhe racchiuse tra dei tag specifici.

    Ad es:
    codice:
    $stringa = "bla bla bla .....[*] bla bla bla  bla bla bla....[*] bla bla bla ";
    
    $sottostringa = "[*](.+)";
    
    funzione che estre tutte le sottostringhe in essa contenute(?)
    sto provando con:
    codice:
    if(eregi($sottostringa, $stringa, $regs)){
    echo $regs[1];
    }
    ma devo sempre fare più estrazioni.

    Esiste un metodo più veloce, che estrae solo le sottostringhe richieste?


  2. #2
    Utente di HTML.it L'avatar di *pragma
    Registrato dal
    Sep 2001
    Messaggi
    1,087
    se hai delle stringhe puoi usare $a = file($nomeStringa) che fa diventare ogni riga l'elemento di un array; ciascuno di questo (quindi ogni riga) con $b = explode("||" $a) rende in array secondo l'elemento separatore indicato tra le virgolette per cui
    foreach($b as $k) {
    echo($k) }
    ma nelle righe deve essere introdotto l'elemento separatore.
    Ora se questo è un tag HTML, non so se te lo riconosce, ... non c'avevo mai pensato.
    ciao

  3. #3
    si, così lo so fare...
    ma credevo esistesse un metodo più veloce per estrarre solo i blocchi ($sottostringhe racchiuse dentro i tag[*]e ) richiesti.

    altrimenti dovrò fare più explode per ricavare i blocchi che mi servono.

    Quindi l'unico modo è questo?

    Non esiste una funzione che se una stringa contiene:

    "txt txt .... <blocco>....txt....<blocco>...txt"

    sia in grado di estrarre contemporaneamente tutti i blocchi presenti (ovviamente richiamandoli con i tag che li identificano)?

  4. #4
    una cosa di sto tipo piu o meno ??

    Codice PHP:
    <?php

    $stringa 
    "1111111111111111[i]fsdfsdf das - adsd[/i]";




    if(
    ereg("[i](.+)[/i]"$stringa$sottostringa)) {

    echo 
    "Quello che hai estratto è " $sottostringa[1];

    } else {

    echo 
    "Non c'è nulla con il tag impostato";

    }

    ?>

  5. #5
    Originariamente inviato da stefano3804
    una cosa di sto tipo piu o meno ??

    Codice PHP:
    <?php

    $stringa 
    "1111111111111111[i]fsdfsdf das - adsd[/i]";




    if(
    ereg("[i](.+)[/i]"$stringa$sottostringa)) {

    echo 
    "Quello che hai estratto è " $sottostringa[1];

    } else {

    echo 
    "Non c'è nulla con il tag impostato";

    }

    ?>
    si, ma è come l'ho fatta io...
    vorrei che estraesse tutte le corrispondenze trovate, qualora ce ne fossero >1.
    Sto provando con
    codice:
    $sstr = "#[*](.+)#";
    if(preg_match_all($sstr, $stringa, $regs)){
    	print_r($regs);
    }
    estrae tutte le corrispondenze trovate, ma stranamente taglia le ultime 4 o 5 di ogni array generato....

    :master:

  6. #6
    Scusa, è da poco che uso ereg_replace e co.
    Ma potresti fare così?
    Codice PHP:
    <?
    $stringa 
    "kikndiiiiii [i]kekekeke - asd[/i] keklll [i]hahahah[/i]";
    if(
    ereg("[i](.+)[/i]",$stringa,$sottostringa)) {
    foreach(
    $sottostringa as $occorrenza) {
    echo 
    $occorrenza;
    }
    }
    ?>
    EDIT: Ok non funzia
    PER CASO ti serve un guestbook, completamente personalizzabile?e PER CASO lo vuoi anche gratis e senza pop-up o dialer?E allora prova il nuovo NewAge GuestBook..Niente per caso, tutto perfetto

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.