Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683

    estrapolare solo testo da html

    ciao a tutti! ho una funzione che mi traduce il testo da una lingua a un'altra.
    questo testo però può presentare del markup html al suo interno e, tradurlo sarebbe sbagliato.
    quindi vorrei estrapolare solo il testo, inviarlo alla funzione che me lo traduce e poi inserirlo nuovamente nel markup...
    quindi se ho
    $testo="ciao mondo !!!";
    deve diventare
    $testo="hello world !!!";
    come posso fare?

  2. #2
    con php potresti riuscirci

  3. #3
    sai a priori i tag che potresti trovare?

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683
    no.. tutti i tag devono essere splittati in qualche modo...
    sto provando a fare qualcosa, che non va, aiutatemi a sistemarla
    Codice PHP:
    preg_match_all("[<.>|</.>]"$text$match);
    foreach(
    $match as $testi)
        echo 
    $testi
    questa roba mi stampa "Array", non ridete , non le ho mai capite le espressioni regolari e non so nemmeno se è il metodo giusto
    comunque vorrei riuscire a dirgli, appena trovi <qualcosa> o </qualcosa> inserisci quello prima e dopo in un array così da scorrerlo e richiamare N volte la funzione che traduce il testo.
    se si riuscisse a scrivere l'espressione regolare giusta sarebbe perfetto

  5. #5
    qualora tu riuscissi a costruire un array contenente tutti i tag possibili che potresti trovare (sia apertura che chiusura) facendo uno str_replace sarebbe molto semplice.. altrimenti con preg_match studiandoci su si può risolvere.. dimmi se la prima soluzione è attuabile altrimenti proviamo vie alternative

    P.S. se ti stampa Array() significa che $testi è un array, indi $match è un array di array, chiaro?

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683
    io uso questo editor di testo e il testo inserito dall'utente andrà in un database, quindi non so quanti e quali tag possono esserci inseriti, penso un pò tutti...
    ho fatto un'altro foreach, non stampa più Array stampa un pò di

    </p></a> e <a> mai... l'espressione regolare è sbagliata... ma io ho proposto questa soluzione ma non ho di queste specifiche particolari, va bene tutto

  7. #7
    ecco a te:

    Codice PHP:
    <?php 

    $stringa
    ="[b]prova: [/b]<div align=left>questo </div><a>testo</a><span> secondo me funziona!</span>";
    preg_match_all("|<[^>]+>(.*)</[^>]+>|U",
        
    $stringa$outPREG_PATTERN_ORDER);
      
        foreach(
    $out[1] as $p)
        
        {        
            echo 
    $p;
        }
    ?>
    fammi sapere se funziona a dovere!

  8. #8
    Utente di HTML.it L'avatar di bode
    Registrato dal
    Feb 2007
    Messaggi
    304
    Ecco la mia soluzione spartana, l'ho testata e funziona
    Codice PHP:
    $testo="[b]Ciao mondo[/b]";
    $pos1=strpos($testo,'>');
    $tag_apertura=substr($testo,0,$pos1+1);

    $pos2=strpos($testo,'<',$pos1);
    $pos3=strpos($testo,'>',$pos2);
    $tag_chiusura=substr($testo,$pos2,$pos3);
    $testodatradurre=substr($testo,$pos1+1,$pos3);
    echo 
    $testodatradurre;

    echo(
    $tag_apertura.$testodatradurre.$tag_chiusura); 

  9. #9
    credo che la mia sia un pelino più pulita =D perchè gestisce anche molti tag in una stringa, la tua non so

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683
    grazie mille! ci siamo quasi...

    per mangusta91
    sto facendo delle prove... per esempio, se scrivessi
    "

    prova <a href=\"index.php\">link</a> fine</p>"
    mi restituisce
    1) prova <a href="/j15/index.php">link
    invece vorreimi desse
    1) prova
    2) link
    3) fine

    ora provo l'altro metodo spartano

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.