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.
Tu veux faire ça en PHP je présume, et non pas en SQL. Donc tu peux essayer strip_tags(), fonction PHP qui devrait enlever tout les tags et ne laisser que le contenu, et tu regardes si c'est vide ou pas.
Zouplaz a dit le 05/10/2004 16:10:
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.
Tu veux faire ça en PHP je présume, et non pas en SQL.
Donc tu peux essayer strip_tags(), fonction PHP qui devrait enlever tout
les tags et ne laisser que le contenu, et tu regardes si c'est vide ou pas.
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.
Tu veux faire ça en PHP je présume, et non pas en SQL. Donc tu peux essayer strip_tags(), fonction PHP qui devrait enlever tout les tags et ne laisser que le contenu, et tu regardes si c'est vide ou pas.
Marc
Je cherche un moyen de déterminer si le contenu de ce champ propose des données affichables ou pas.
- tu peux deja réaliser un strip_tags($txt) et voir ce qu'il en reste.
- d'autre part avec des expressions regulieres tu peux supprimer : - les lignes vides ou n consécutifs - ...
Je cherche un moyen de déterminer si le contenu de ce champ propose des
données affichables ou pas.
- tu peux deja réaliser un strip_tags($txt) et voir ce qu'il en reste.
- d'autre part avec des expressions regulieres tu peux supprimer :
- les lignes vides ou n consécutifs
- ...
Je cherche un moyen de déterminer si le contenu de ce champ propose des données affichables ou pas.
- tu peux deja réaliser un strip_tags($txt) et voir ce qu'il en reste.
- d'autre part avec des expressions regulieres tu peux supprimer : - les lignes vides ou n consécutifs - ...
Olivier Miakinen
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
Il y a deux choses à faire. La première (et la plus difficile) est de repérer les différentes balises ouvrantes et fermantes pour séparer ce qui est « balisage » (markup) de ce qui est du simple texte. La seconde (et la plus facile) consiste à extraire les entités du style & ou & (non alphanumérique) mais aussi A (alphanumérique).
Pour la partie difficile, tu peux peut-être chercher ici : http://fr2.php.net/manual/fr/print/ref.tidy.php Par exemple, utiliser tidy_parse_string(), tidy_node->next() et tidy_node->isText().
Si tu veux le faire toi-même, tout dépend si tu peux rencontrer des ">" dans les attributs, par exemple <balise attribut=">">. Selon le cas, tu pourras y arriver simplement ou pas.
Pour la partie facile, je vois comme solution : 1) preg_replace_callback() pour remplacer les entités soit par une lettre ('A' par exemple) soit par une chaîne vide, selon qu'elles sont alphanumériques ou pas. 2) preg_match() sur le résultat pour voir s'il contient ou non un caractère alphanumérique.
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
Il y a deux choses à faire. La première (et la plus difficile) est de
repérer les différentes balises ouvrantes et fermantes pour séparer ce
qui est « balisage » (markup) de ce qui est du simple texte. La seconde
(et la plus facile) consiste à extraire les entités du style & ou
& (non alphanumérique) mais aussi A (alphanumérique).
Pour la partie difficile, tu peux peut-être chercher ici :
http://fr2.php.net/manual/fr/print/ref.tidy.php
Par exemple, utiliser tidy_parse_string(), tidy_node->next() et
tidy_node->isText().
Si tu veux le faire toi-même, tout dépend si tu peux rencontrer des ">"
dans les attributs, par exemple <balise attribut=">">. Selon le cas, tu
pourras y arriver simplement ou pas.
Pour la partie facile, je vois comme solution :
1) preg_replace_callback() pour remplacer les entités soit par une
lettre ('A' par exemple) soit par une chaîne vide, selon qu'elles sont
alphanumériques ou pas.
2) preg_match() sur le résultat pour voir s'il contient ou non un
caractère alphanumérique.
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
Il y a deux choses à faire. La première (et la plus difficile) est de repérer les différentes balises ouvrantes et fermantes pour séparer ce qui est « balisage » (markup) de ce qui est du simple texte. La seconde (et la plus facile) consiste à extraire les entités du style & ou & (non alphanumérique) mais aussi A (alphanumérique).
Pour la partie difficile, tu peux peut-être chercher ici : http://fr2.php.net/manual/fr/print/ref.tidy.php Par exemple, utiliser tidy_parse_string(), tidy_node->next() et tidy_node->isText().
Si tu veux le faire toi-même, tout dépend si tu peux rencontrer des ">" dans les attributs, par exemple <balise attribut=">">. Selon le cas, tu pourras y arriver simplement ou pas.
Pour la partie facile, je vois comme solution : 1) preg_replace_callback() pour remplacer les entités soit par une lettre ('A' par exemple) soit par une chaîne vide, selon qu'elles sont alphanumériques ou pas. 2) preg_match() sur le résultat pour voir s'il contient ou non un caractère alphanumérique.
CrazyCat
Zouplaz wrote:
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
Partant du principe que tu es sous mySQL, tu peux utiliser des expressions régulières avec des requètes du genre: SELECT ton_texte FROM database REGEXP '[^(<[^>]+>)]^( )^#' ceci devrait, avec un minimum d'arrangements (je suis pas doué pour les regexp) te ressortir uniquement "ton_texte" lorsque celui-ci contient du texte affichable.
-- Tout sur les eggdrops http://www.c-p-f.org ML @
Zouplaz wrote:
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
Partant du principe que tu es sous mySQL, tu peux utiliser des
expressions régulières avec des requètes du genre:
SELECT ton_texte FROM database REGEXP '[^(<[^>]+>)]^( )^#'
ceci devrait, avec un minimum d'arrangements (je suis pas doué pour les
regexp) te ressortir uniquement "ton_texte" lorsque celui-ci contient du
texte affichable.
--
Tout sur les eggdrops
http://www.c-p-f.org
ML @ eggdrop_fr@yahoogroupes.fr
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
Partant du principe que tu es sous mySQL, tu peux utiliser des expressions régulières avec des requètes du genre: SELECT ton_texte FROM database REGEXP '[^(<[^>]+>)]^( )^#' ceci devrait, avec un minimum d'arrangements (je suis pas doué pour les regexp) te ressortir uniquement "ton_texte" lorsque celui-ci contient du texte affichable.
-- Tout sur les eggdrops http://www.c-p-f.org ML @
Cleo
J'ai une chaine de texte (champ TEXT de 65535 caractères maxi) formatté en HTML. Si ton document HTML ressemble plutot un doc XHTML, tu peux imaginer
utiliser un parser XML et boucler sur les noeuds du dom pour verifier que leur contenu n'est pas un text assimilable à vide ...
C'est juste une piste ... Cléo.
J'ai une chaine de texte (champ TEXT de 65535 caractères maxi) formatté en
HTML.
Si ton document HTML ressemble plutot un doc XHTML, tu peux imaginer
utiliser un parser XML et boucler sur les noeuds du dom pour verifier que
leur contenu n'est pas un text assimilable à vide ...
function isEmptyHtml($datas) { $datas = strip_tags($datas); // Virer les tags html $datas = str_replace(" ","",$datas); // Virer les $datas = str_replace(" ","",$datas); // Virer les espaces
return (strlen($datas) == 0); }
Ca a l'air de remplir son rôle...
Stephane Pineau
Le 05 Oct 2004 14:10:40 GMT, Zouplaz écrivait:
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
Essayer avec :
if (trim(strip_tags(chaine))<>""): echo "chaine affichable"; endif;
Leimotiv habituel... une lecture approfondie de la section "chaines de caractères" de la doc php permet de résoudre simplement pas mal de fonctions bêtes et méchantes mais sacrément utiles.
Le 05 Oct 2004 14:10:40 GMT, Zouplaz <pouet@pouet.com> écrivait:
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
Essayer avec :
if (trim(strip_tags(chaine))<>""): echo "chaine affichable"; endif;
Leimotiv habituel... une lecture approfondie de la section "chaines de
caractères" de la doc php permet de résoudre simplement pas mal de fonctions
bêtes et méchantes mais sacrément utiles.
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
Essayer avec :
if (trim(strip_tags(chaine))<>""): echo "chaine affichable"; endif;
Leimotiv habituel... une lecture approfondie de la section "chaines de caractères" de la doc php permet de résoudre simplement pas mal de fonctions bêtes et méchantes mais sacrément utiles.
Peut être que je me trompe ou que je n'ai pas bien compris :) Mais sinon j'essaierais dejà de proceder comme ça.
a+
Olivier Miakinen
Le 05/10/2004 23:34, j'avais répondu à Zouplaz :
Il y a deux choses à faire. La première (et la plus difficile) est de repérer les différentes balises ouvrantes et fermantes pour séparer ce qui est « balisage » (markup) de ce qui est du simple texte. La seconde (et la plus facile) consiste à extraire les entités du style & ou & (non alphanumérique) mais aussi A (alphanumérique).
Pour la partie difficile, [...]
Tous les autres ont été unanimes pour conseiller strip_tags() que je ne connaissais pas. C'est effectivement le mieux.
En revanche, je crois que personne d'autre n'a répondu sur le fait que tu cherches des caractères alphanumériques uniquement. Tiens, à propos, tu n'as pas dit si les caractères accentués sont considérés comme alphanumériques, quelle que soit la langue ?
Le 05/10/2004 23:34, j'avais répondu à Zouplaz :
Il y a deux choses à faire. La première (et la plus difficile) est de
repérer les différentes balises ouvrantes et fermantes pour séparer ce
qui est « balisage » (markup) de ce qui est du simple texte. La seconde
(et la plus facile) consiste à extraire les entités du style & ou
& (non alphanumérique) mais aussi A (alphanumérique).
Pour la partie difficile, [...]
Tous les autres ont été unanimes pour conseiller strip_tags() que je ne
connaissais pas. C'est effectivement le mieux.
En revanche, je crois que personne d'autre n'a répondu sur le fait que
tu cherches des caractères alphanumériques uniquement. Tiens, à propos,
tu n'as pas dit si les caractères accentués sont considérés comme
alphanumériques, quelle que soit la langue ?
Il y a deux choses à faire. La première (et la plus difficile) est de repérer les différentes balises ouvrantes et fermantes pour séparer ce qui est « balisage » (markup) de ce qui est du simple texte. La seconde (et la plus facile) consiste à extraire les entités du style & ou & (non alphanumérique) mais aussi A (alphanumérique).
Pour la partie difficile, [...]
Tous les autres ont été unanimes pour conseiller strip_tags() que je ne connaissais pas. C'est effectivement le mieux.
En revanche, je crois que personne d'autre n'a répondu sur le fait que tu cherches des caractères alphanumériques uniquement. Tiens, à propos, tu n'as pas dit si les caractères accentués sont considérés comme alphanumériques, quelle que soit la langue ?
Stephane Pineau
Le 06 Oct 2004 08:30:29 GMT, Olivier Miakinen <om+ écrivait:
En revanche, je crois que personne d'autre n'a répondu sur le fait que tu cherches des caractères alphanumériques uniquement. Tiens, à propos, tu n'as pas dit si les caractères accentués sont considérés comme alphanumériques, quelle que soit la langue ?
Si en plus il faut exclure un certains nombre de caractères ca n'est pas plus compliqué, il suffit d'utiliser la fonction (de chaines encore) strtr (d'autres sont possibles) pour convertir tous les caractères non acceptés en espaces, le trim (ou chop pour enlever d'éventuel caractères spéciaux) final permettra alors de définir si la chaine est vide ou non.
Avec trois ou quiatres fonctions de chaines on doit pouvoir obtenir le résultat voulu avec un meilleur temps de réponse (et une meilleure lisibilité) qu'avec une expressions régulière.
Le 06 Oct 2004 08:30:29 GMT, Olivier Miakinen <om+news@miakinen.net>
écrivait:
En revanche, je crois que personne d'autre n'a répondu sur le fait que
tu cherches des caractères alphanumériques uniquement. Tiens, à propos,
tu n'as pas dit si les caractères accentués sont considérés comme
alphanumériques, quelle que soit la langue ?
Si en plus il faut exclure un certains nombre de caractères ca n'est pas
plus compliqué, il suffit d'utiliser la fonction (de chaines encore) strtr
(d'autres sont possibles) pour convertir tous les caractères non acceptés
en espaces, le trim (ou chop pour enlever d'éventuel caractères spéciaux)
final permettra alors de définir si la chaine est vide ou non.
Avec trois ou quiatres fonctions de chaines on doit pouvoir obtenir le
résultat voulu avec un meilleur temps de réponse (et une meilleure
lisibilité) qu'avec une expressions régulière.
Le 06 Oct 2004 08:30:29 GMT, Olivier Miakinen <om+ écrivait:
En revanche, je crois que personne d'autre n'a répondu sur le fait que tu cherches des caractères alphanumériques uniquement. Tiens, à propos, tu n'as pas dit si les caractères accentués sont considérés comme alphanumériques, quelle que soit la langue ?
Si en plus il faut exclure un certains nombre de caractères ca n'est pas plus compliqué, il suffit d'utiliser la fonction (de chaines encore) strtr (d'autres sont possibles) pour convertir tous les caractères non acceptés en espaces, le trim (ou chop pour enlever d'éventuel caractères spéciaux) final permettra alors de définir si la chaine est vide ou non.
Avec trois ou quiatres fonctions de chaines on doit pouvoir obtenir le résultat voulu avec un meilleur temps de réponse (et une meilleure lisibilité) qu'avec une expressions régulière.