OVH Cloud OVH Cloud

Cherche un algo

14 réponses
Avatar
Zouplaz
Bonjour, je cherche un moyen de réaliser l'opération suivante :

J'ai une chaine de texte (champ TEXT de 65535 caractères maxi) formatté en
HTML.

Je cherche un moyen de déterminer si le contenu de ce champ propose des
données affichables ou pas.

Est considéré comme ayant un contenu, toute chaine constituée d'au moins un
caractère alphanumérique en dehors de tout tag HTML et du symbole  

Exemples (les espaces n'utilisant pas d'entities sont remplacés par des #)

1)

<p>
<br />
</p>

Est considéré comme vide

2)

&nbsp;&nbsp;

Est considéré comme vide

3)
#
<br />

Idem



Merci

4 réponses

1 2
Avatar
Olivier Miakinen

function isEmptyHtml($datas)
{
$datas = strip_tags($datas); // Virer les tags html
$datas = str_replace("&nbsp;","",$datas); // Virer les &nbsp;
$datas = str_replace(" ","",$datas); // Virer les espaces

return (strlen($datas) == 0);
}


Je viens de remarquer que cette réponse était la tienne, toi qui posais
la question. Du coup je ne comprends plus rien, parce qu'elle donne un
résultat différent de celui que tu semblais attendre, notamment pour ton
3e exemple :

#
<br />

Le "#" est du texte, ou pas ?



Voici un autre exemple qui devrait foirer :

&nbsp;
&nbsp;

Le saut de ligne entre les deux &nbsp; n'est pas du vide ?

Avatar
Zouplaz
Olivier Miakinen - om+ :


function isEmptyHtml($datas)
{
$datas = strip_tags($datas); // Virer les tags html
$datas = str_replace("&nbsp;","",$datas); // Virer les &nbsp;
$datas = str_replace(" ","",$datas); // Virer les espaces

return (strlen($datas) == 0);
}


Je viens de remarquer que cette réponse était la tienne, toi qui posais
la question. Du coup je ne comprends plus rien, parce qu'elle donne un
résultat différent de celui que tu semblais attendre, notamment pour ton
3e exemple :

#
<br />

Le "#" est du texte, ou pas ?




C'est un espace (c'était pour symboliser un espace dans mon post).
Donc # -> est supprimé
et <br /> aussi

Donc c'est vide et retourne VRAI


Voici un autre exemple qui devrait foirer :

&nbsp;
&nbsp;

Le saut de ligne entre les deux &nbsp; n'est pas du vide ?



Pour le dernier exemple, "normalement" ça devrait pas arriver car
l'utilisateur n'a à ma connaissance aucune possibilité pour saisir un
véritable saut de ligne (un n). Il serait remplacé par un <br> ou <br />
Ca donnerait &nbsp;<br />&nbsp;

Et les deux (le nbsp et le br) seraient supprimés aussi par les lignes de
code ci-dessus

Bon, je vais me repencher sur le sujet avec l'aide des réponses obtenues
ici... Car il y a surement des cas moins évidents. En même temps je cherche
pas à prendre en compte tous les cas particuliers... juste les plus
probables


Avatar
Olivier Miakinen

Pour le dernier exemple, "normalement" ça devrait pas arriver car
l'utilisateur n'a à ma connaissance aucune possibilité pour saisir un
véritable saut de ligne (un n). Il serait remplacé par un <br> ou <br />
Ca donnerait &nbsp;<br />&nbsp;


Ok. Je n'ai plus d'objection, votre honneur. ;-)

Avatar
Zouplaz
Olivier Miakinen - om+ :


Pour le dernier exemple, "normalement" ça devrait pas arriver car
l'utilisateur n'a à ma connaissance aucune possibilité pour saisir un
véritable saut de ligne (un n). Il serait remplacé par un <br> ou
<br /> Ca donnerait &nbsp;<br />&nbsp;


Ok. Je n'ai plus d'objection, votre honneur. ;-)



Bien, greffiers vous pouvez raccompagner le témoin :-) !


1 2