Visualizzazione dei risultati da 1 a 5 su 5

Discussione: substr e strip_tags

  1. #1

    substr e strip_tags

    Allora, ho un problema con substr e strip_tags, quando questi si trovano assieme.

    Io salvo dei testi nel database mysql, in questo modo (il testo contiene dei tag html, in quanto viene creato con un editor):

    $testo=addslashes(stripslashes(trim($_POST['testo'])));
    $insert=mysql_query("insert into tabella values (NULL, $testo')",$db);

    E poi devo recuperare solo una porzione di testo, da mostrare in una specie di vetrina, e lo faccio così:

    echo substr(strip_tags(trim($c['testo'])),0,255);

    Che mi recupera 255 caratteri epurati da tutti i tag html. Però, c'è un però, se si trova di fronte ad un'entità html, tipo & n b s p ; (ho messo gli spazi perchè si veda), se capita proprio al 251° carattere, per esempio, me la tronca, e quindi il browser non la interpreta più come un'entità, ma come semplici caratteri, e mi va a stampare "domani grande festa a roma e &nb".

    Come posso evitarlo?
    Se metto html_entity_decode, viene na schifezza, tutti i caratteri speciali non vengono interpretati, se metto htmlentities mi mostra tutti i tag senza interpretarli. Sinceramente non so come fare!

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027

    Re: substr e strip_tags

    Originariamente inviato da elysaweb
    Allora, ho un problema con substr e strip_tags, quando questi si trovano assieme.

    Io salvo dei testi nel database mysql, in questo modo (il testo contiene dei tag html, in quanto viene creato con un editor):

    $testo=addslashes(stripslashes(trim($_POST['testo'])));
    $insert=mysql_query("insert into tabella values (NULL, $testo')",$db);

    E poi devo recuperare solo una porzione di testo, da mostrare in una specie di vetrina, e lo faccio così:

    echo substr(strip_tags(trim($c['testo'])),0,255);

    Che mi recupera 255 caratteri epurati da tutti i tag html. Però, c'è un però, se si trova di fronte ad un'entità html, tipo & n b s p ; (ho messo gli spazi perchè si veda), se capita proprio al 251° carattere, per esempio, me la tronca, e quindi il browser non la interpreta più come un'entità, ma come semplici caratteri, e mi va a stampare "domani grande festa a roma e &nb".

    Come posso evitarlo?
    Se metto html_entity_decode, viene na schifezza, tutti i caratteri speciali non vengono interpretati, se metto htmlentities mi mostra tutti i tag senza interpretarli. Sinceramente non so come fare!
    echo htmlentities(substr(html_entity_decode(strip_tags( trim($c['testo']))),0,255))

    ciao

  3. #3

    Re: Re: substr e strip_tags

    Originariamente inviato da gianiaz
    echo htmlentities(substr(html_entity_decode(strip_tags( trim($c['testo']))),0,255))

    ciao
    Ciao

    Ho provato a fare come dici tu, però certi caratteri non li interpreta più, come ad esempio “ ” ’ ...

    che dici?

  4. #4
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    non so darti una risposta precisa, ma credo che il problema sia il solito dei charset.

    Se guardi il man di html_entitiy_decode:

    string html_entity_decode ( string $string [, int $quote_style [, string $charset ]] )

    Prova a passare nel terzo parametro il tipo di encoding che usa mysql (e che dovrebbe essere lo stesso usato nella visualizzazione della pagina).

    ciao

  5. #5
    Niente da fare, anche mettendo i vari tipi di encoding dava sempre qualche problema, così ho usato questa soluzione:

    Codice PHP:
    $testo substr(strip_tags(trim($c['testo'])),0,255);
    $subtesto substr($testo,250,255);
    $entity strstr($subtesto,'&');
    $testo str_replace($entity,'',$testo); 
    in questo modo, se negli ultimi 5 caratteri c'è un &, toglie tutta la stringa successiva.

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.