Manipulation chaine de caractere
Le
martin.sam
Bonjour,
Je suis confronté à un problème qui pour certain peut sembler une
simple formalité.
A l'aide d'un fonction Unix (pdftotext) je récupère le contenu d'un
fichier PDF.
Le contenu du pdf est de la forme :
Culture 1. Exposition : l'Ecole de Paris au Musée d'Art Moderne Niveau
: Avancé (a) Objectifs : Compréhension orale Exprimer son opinion,
ses goûts Thèmes : L'art, l'Ecole de Paris 1. Mise en route
Vocabulaire : Ecole de Paris : mouvement artistique (19041929)
représenté pour l'essentiel par des artistes étrangers venus en
France pour des raisons diverses ( Chagall, Modigliani, Soutine,
Kisling, Picasso, Orloff, Zadkine) (a) Aimez-vous visiter des
expositions de peinture ?Pourquoi ? Quelle est l'exposition qui vous a
le plus marqué(e) ?Pour quelles raisons ? 2. Avec le document
(a)Visionner le document jusqu'à l'apparition de Gaston Damag.
Préciser aux élèves que la femme interviewée, Jeanine Warnod, est
la fille de André Warnod (1885-1960) inventeur du terme « Ecole de
Paris » Travaillez par deux. Que dit Jeanine Warnod à propos de son
père ? Quels souvenirs personnels a-t-elle de l'Ecole de Paris ?
Quelle comparaison établit-elle entre les artistes d'autrefois et ceux
d'aujourd'hui ? Mise en commun. Visionner le document jusqu'à la fin.
Que dit Gaston Damag au sujet des artistes d'autrefois et d'aujourd'hui
? 3. Expression orale (a) D'après vous, que peut-on faire pour
stimuler et faciliter la création des artistes ? Pensez-vous, comme
Gaston Damag, que les jeunes artistes n'ont plus besoin d'échanges
avec les autres artistes contemporains ? Pourquoi ? 4. Expression
écrite (a) Choisissez l'une des citations suivantes, dites comment
vous la comprenez et donnez votre opinion. - « En art, il n'y a pas
d'étranger » (Brancusi. Déclaration pour le Congrès de Paris en
1922) - « Doit-on considérer l'art français comme une notion
purement ethnique ou comme une notion purement esthétique ? »
(Waldemar George. Compte rendu du Salon des Indépendants. 1924) 5.
Pour aller plus loin (a) Découvrez quelques artistes de l'Ecole de
Paris :
http://www.mairie-paris.fr/musees/M...il_edp.htm
Cliquez sur une oeuvre, décrivez-la (oeuvres d' Archipenko,
Modigliani, Brancusi, Marcoussis, Orloff). Présentez l'oeuvre à la
classe. Fiche réalisée par Martine Vidal, Cavilam, Vichy "
De cette chaine de caractère j'ai besoin uniquement de :
Titre : "Exposition : l'Ecole de Paris au Musée d'Art Moderne"
Niveau : "Avancé (a)"
Objectifs : Compréhension orale Exprimer son opinion, ses goûts
Thèmes : L'art, l'Ecole de Paris
Je veux mettre ces informations en base de donnée. Le script PHP
permettant de manipuler la chaine, doit s'adapter à chaque PDF. Dans
chaque pdf il y a toujours un nombre suivi d'un point "1." puis le
titre. Le problème c'est que parfois thème est au singulier ou au
pluriel ainsi que Niveau soit au singulier soit au pluriel.
J'ai essayer de faire ça :
$debut_titre = strpos($texte, ".");
$fin_titre = strpos($texte, "Niveau");
echo substr($texte, $debut_titre+1,$fin_titre-10);
$debut_niveau= strpos($texte, "Niveau");
$fin_niveau= strpos($texte, "Objectifs");
echo substr($texte, $debut_niveau,$fin_niveau);
Cela permet de définir un intervalle entre chaque chaine, mais ce
n'est pas concluant et souvant inexacte.
Si quelqu'un à une solution plus performante pour extraire les bonnes
infos de la chaine de caractère, merci de l'indiquer.
--
MARTIN.S
http://www.cavilam.com/
http://www.leplaisirdapprendre.com/
http://sevreskarate.free.fr/
Je suis confronté à un problème qui pour certain peut sembler une
simple formalité.
A l'aide d'un fonction Unix (pdftotext) je récupère le contenu d'un
fichier PDF.
Le contenu du pdf est de la forme :
Culture 1. Exposition : l'Ecole de Paris au Musée d'Art Moderne Niveau
: Avancé (a) Objectifs : Compréhension orale Exprimer son opinion,
ses goûts Thèmes : L'art, l'Ecole de Paris 1. Mise en route
Vocabulaire : Ecole de Paris : mouvement artistique (19041929)
représenté pour l'essentiel par des artistes étrangers venus en
France pour des raisons diverses ( Chagall, Modigliani, Soutine,
Kisling, Picasso, Orloff, Zadkine) (a) Aimez-vous visiter des
expositions de peinture ?Pourquoi ? Quelle est l'exposition qui vous a
le plus marqué(e) ?Pour quelles raisons ? 2. Avec le document
(a)Visionner le document jusqu'à l'apparition de Gaston Damag.
Préciser aux élèves que la femme interviewée, Jeanine Warnod, est
la fille de André Warnod (1885-1960) inventeur du terme « Ecole de
Paris » Travaillez par deux. Que dit Jeanine Warnod à propos de son
père ? Quels souvenirs personnels a-t-elle de l'Ecole de Paris ?
Quelle comparaison établit-elle entre les artistes d'autrefois et ceux
d'aujourd'hui ? Mise en commun. Visionner le document jusqu'à la fin.
Que dit Gaston Damag au sujet des artistes d'autrefois et d'aujourd'hui
? 3. Expression orale (a) D'après vous, que peut-on faire pour
stimuler et faciliter la création des artistes ? Pensez-vous, comme
Gaston Damag, que les jeunes artistes n'ont plus besoin d'échanges
avec les autres artistes contemporains ? Pourquoi ? 4. Expression
écrite (a) Choisissez l'une des citations suivantes, dites comment
vous la comprenez et donnez votre opinion. - « En art, il n'y a pas
d'étranger » (Brancusi. Déclaration pour le Congrès de Paris en
1922) - « Doit-on considérer l'art français comme une notion
purement ethnique ou comme une notion purement esthétique ? »
(Waldemar George. Compte rendu du Salon des Indépendants. 1924) 5.
Pour aller plus loin (a) Découvrez quelques artistes de l'Ecole de
Paris :
http://www.mairie-paris.fr/musees/M...il_edp.htm
Cliquez sur une oeuvre, décrivez-la (oeuvres d' Archipenko,
Modigliani, Brancusi, Marcoussis, Orloff). Présentez l'oeuvre à la
classe. Fiche réalisée par Martine Vidal, Cavilam, Vichy "
De cette chaine de caractère j'ai besoin uniquement de :
Titre : "Exposition : l'Ecole de Paris au Musée d'Art Moderne"
Niveau : "Avancé (a)"
Objectifs : Compréhension orale Exprimer son opinion, ses goûts
Thèmes : L'art, l'Ecole de Paris
Je veux mettre ces informations en base de donnée. Le script PHP
permettant de manipuler la chaine, doit s'adapter à chaque PDF. Dans
chaque pdf il y a toujours un nombre suivi d'un point "1." puis le
titre. Le problème c'est que parfois thème est au singulier ou au
pluriel ainsi que Niveau soit au singulier soit au pluriel.
J'ai essayer de faire ça :
$debut_titre = strpos($texte, ".");
$fin_titre = strpos($texte, "Niveau");
echo substr($texte, $debut_titre+1,$fin_titre-10);
$debut_niveau= strpos($texte, "Niveau");
$fin_niveau= strpos($texte, "Objectifs");
echo substr($texte, $debut_niveau,$fin_niveau);
Cela permet de définir un intervalle entre chaque chaine, mais ce
n'est pas concluant et souvant inexacte.
Si quelqu'un à une solution plus performante pour extraire les bonnes
infos de la chaine de caractère, merci de l'indiquer.
--
MARTIN.S
http://www.cavilam.com/
http://www.leplaisirdapprendre.com/
http://sevreskarate.free.fr/

Poser une question


ce serait plutôt substr($texte, $debut_titre+1, $fin_titre-$debut_titre-1);
Même chose.
list($chaine1, $chaine2)=split("Niveau*. :", $texte);
//echo $chaine1;
$a= split(".", $chaine1);
echo "<br/>";
echo "Titre : ". $a[1]."<br/>";
$b = split("Objectif*. :", $chaine2);
$niveau = $b[0];
echo "Niveau(x) : ". $niveau ."</br>";
$c = split("Thème*. :", $b[1]);
$objectif = $c[0];
echo "Objectifs : ". $objectif ."</br>";
$d = split("1. ", $c[1]);
$theme = $d[0];
echo "Thèmes : ". $theme ."</br>";
Avec le "*." on dit alors que la chaine de caractères "Niveau :" peut
aussi être de la forme "Niveaux :".
Quelqu'un a t'il une solution pour ne pas avoir de problème de casse ?
Autre question, est t'il possible d'identifier un chiffre suivi d'un
point mais peut importe le chiffre, ce peut être "1." "2." "3." "15."
"200."
Merci d'avance
MARTIN.S
-------------------------------------------
http://www.cavilam.com
http://www.leplaisirdapprendre.com
http://sevreskarate.free.fr
en utlisant un split du genre:
split("niveau*. :", strtolower($texte));
"/[d]{1,}./" <-- de 1 à x chiffres suivi(s) d'un point
De rien
--
Découvrez Original War: http://www.original-war.org
Humour: http://www.chatfou.com
Tchattez en liberté: http://www.crazy-irc.net
Dans ce cas là ce serait plutôt "Niveaux? :"
spliti ?
[0-9]+.
Voici une solution à votre problème:
<?php
$str_texte_du_pdf = file_get_contents('pdf.txt');
// On met tout le texte sur une ligne afin de s'éviter une
// prise de tête avec les modifiers m et s des PCRE.
// cf: http://www.php.net/pcre
$str_texte_du_pdf = str_replace(
Array("rn", "r", "n"),
Array("n", "n", ' '),
$str_texte_du_pdf);
// L'expression régulière / rationnelle qui va nous permettre
// d'extraire les informations recherchées.
// Un problème est que le thème doit avoir un marqueur de fin.
$str_pattern = '/[0-9]+. (.+) Niveaux? : (.+) Objectifs? : (.+) '
. 'Thèmes? : (.+) [0-9]+./Ui';
if (preg_match($str_pattern, $str_texte_du_pdf, $arr_str_matches))
{
echo('<pre>');
echo($str_texte_du_pdf . "n");
var_dump($arr_str_matches);
echo('Titre : ' . $arr_str_matches[1] . "n"); // Magic number
echo('Niveaux : ' . $arr_str_matches[2] . "n");
echo('Objectifs : ' . $arr_str_matches[3] . "n");
echo('Thèmes : ' . $arr_str_matches[4] . "n");
echo('</pre>');
}
?>
Titre : Exposition : l'Ecole de Paris au Musée d'Art Moderne
Niveaux : Avancé (a)
Objectifs : Compréhension orale Exprimer son opinion, ses goûts
Thèmes : L'art, l'Ecole de Paris
HTH
--
hughes monget