Filtre chaine caractère pour classe FPDF

Fermé
zoubila44 Messages postés 110 Date d'inscription lundi 3 février 2014 Statut Membre Dernière intervention 24 juillet 2015 - Modifié par zoubila44 le 22/05/2015 à 10:49
zoubila44 Messages postés 110 Date d'inscription lundi 3 février 2014 Statut Membre Dernière intervention 24 juillet 2015 - 22 mai 2015 à 15:45
Salut tout le monde,

Je vous explique mon problème,

je suis en train de développez une fonctionnalité de géneration de pdf ( avec la classe FPDF ).

en gros je vais chercher en base des chaines de caractères et je les affiche sur mon pdf, jusque la pas de souci.

le problème c'est que dans mes chaines de carac j'ai des images ( ex: balise <img src="tutu/tutu.png" height="50" width="50" /> )
et du text.

je dois faire un fonction qui va parcourir la chaine, stocker le text jusqu'a ce qu'il rencontre une balise <img, stocker la source de l'image, width et height, continuez a parcourir le text jusqu'a la prochaine image en stockant source,width,heigth, et on parcour la suite de la chaine jusqu'a la fin de celle ci

et ensuite je dois afficher cette chaine de caractère sur mon pdf en affichant text1 puis img 1 text 2 puis img 2

ca fais 2 semaine que je galère .. je ne suis pas très doué pour manipuler les chaines de carac en PHP

Voici ou j'en suis: a savoir pas grand chose

function filtreQuest($chaine,$text){
$chaine="Salut tout le monde, je vais vous montrer les images de guitare et de basse tout d'abords voici la <span>guitare</span> <img src='images/guitare.png'> ensuite va venir la <span> basse </span> <img src='images/basse.jpg' width='50' height='50'>, à toi de joué";
$chaine=str_replace('<span>', '', $chaine);
$chaine=str_replace('</span>', '', $chaine);

if(strpos($chaine, '<img')){
$text=strstr($chaine, '<img',TRUE);


}else{

}
return $text;
}

echo filtreQuest($chaine,$text);


Merci d'avacne
A voir également:

2 réponses

VlkPr3s Messages postés 235 Date d'inscription vendredi 30 mai 2014 Statut Membre Dernière intervention 27 juin 2016 130
22 mai 2015 à 11:50
Salut, sans trop t'en dire car à mon avis tu as mal cherché, va voir du coté de explode.
Cette fonction permet de rechercher une occurence dans une chaine et de la renvoyé en tant que tableau.
0
zoubila44 Messages postés 110 Date d'inscription lundi 3 février 2014 Statut Membre Dernière intervention 24 juillet 2015 6
22 mai 2015 à 12:58
require('FPDF/fpdf.php');

$chaine="Salut tout le monde, je vais vous montrer les images de guitare et de basse tout d'abord voici la <span>guitare</span> <img src='images/guitare.png' width='510' height='45'/> ensuite va venir la <span> basse </span> <img src='images/basse.jpg' width='150' height='41' />, à toi de joué";

$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Helvetica','B',16);
$pdf->SetFillColor(6,211,248);
$pdf->SetTextColor(243,11,180);
$pdf->Cell(0,10,'INSTRUMENTS',1,1,'C',TRUE);

$pdf->Ln(10);
$pdf->SetFillColor(20,150,50);
$pdf->SetTextColor(255,255,255);
$pdf->Cell(0,10,filtreQuest($chaine),0,1,'L',TRUE);
$pdf->Ln(40);
$pdf->MultiCell(0,10,$chaine,1,1,'L',FALSE);

$pdf->Output();


function filtreQuest($chaine){
$chaine=str_replace('<span>', '', $chaine);
$chaine=str_replace('</span>', '', $chaine);

if(strpos($chaine, '<img')){
$chaine=str_replace('<', '|', $chaine);
$chaine=str_replace('/>', '|', $chaine);
$tab=explode('|', $chaine);
foreach ($tab as $key => $value) {

if (strpos($value, 'img ')===0) {
$text[$key]=f_get_info_image($value);
} else{
$text[$key]=$value;
}

}

}
return $text;
}



var_dump(filtreQuest($chaine));




function f_get_info_image($imgBalise){

$res=array('src'=>'','height'=>'', 'width'=>'');

$imgBalise = str_replace('"', '|', $imgBalise);
$imgBalise = str_replace("'", '|', $imgBalise);

$pos_src=strpos($imgBalise, 'src=|');
if($pos_src===false){}else{
$endPosSrc=strpos($imgBalise, "|",$pos_src+5);
$res["src"]=substr($imgBalise, $pos_src+5, $endPosSrc-($pos_src+5));
}
$pos_h=strpos($imgBalise, 'height=|');
if($pos_h===false){}else{
$endPosH=strpos($imgBalise, "|",$pos_h+8);
$res["height"]=substr($imgBalise, $pos_h+8, $endPosH-($pos_h+8));
}
$pos_w=strpos($imgBalise, 'width=|');
if($pos_w===false){}else{
$endPosW=strpos($imgBalise, "|",$pos_w+7);
$res["width"]=substr($imgBalise, $pos_w+7, $endPosW-($pos_w+7));
}

return $res;
}


voici mon code a jour je me suis planté et du coup oui j'utilise explode


Mon souci est plus au niveau de l'affichage dans le pdf :s la reutilisation des données ...

Voici le vardump que j'obtient:

array (size=5)
0 => string 'Salut tout le monde, je vais vous montrer les images de guitare et de basse tout d'abord voici la guitare ' (length=106)
1 =>
array (size=3)
'src' => string 'images/guitare.png' (length=18)
'height' => string '45' (length=2)
'width' => string '510' (length=3)
2 => string ' ensuite va venir la basse ' (length=29)
3 =>
array (size=3)
'src' => string 'images/basse.jpg' (length=16)
'height' => string '41' (length=2)
'width' => string '150' (length=3)
4 => string ', à toi de joué' (length=28)
0
VlkPr3s Messages postés 235 Date d'inscription vendredi 30 mai 2014 Statut Membre Dernière intervention 27 juin 2016 130
22 mai 2015 à 13:05
tu as besoin des propriétés height et width à savoir les éléments 1 et 3
tu peux refaire un explode de ses arguments

$tab = explode ("width",tableau[1]);
0
zoubila44 Messages postés 110 Date d'inscription lundi 3 février 2014 Statut Membre Dernière intervention 24 juillet 2015 6
22 mai 2015 à 14:14
je n'ai pas trop compris car je récupère un tableau avec source | width | height
pourrais tu m'en dire plus ?
0
VlkPr3s Messages postés 235 Date d'inscription vendredi 30 mai 2014 Statut Membre Dernière intervention 27 juin 2016 130 > zoubila44 Messages postés 110 Date d'inscription lundi 3 février 2014 Statut Membre Dernière intervention 24 juillet 2015
22 mai 2015 à 14:15
ton index 3 vaut une chaine regroupant les info donc tu as besoin ainsi que le 1 non ?
0
zoubila44 Messages postés 110 Date d'inscription lundi 3 février 2014 Statut Membre Dernière intervention 24 juillet 2015 6
22 mai 2015 à 14:17
au niveau de l'index 1 et 3 ce sont des array(src,height,width)
0
VlkPr3s Messages postés 235 Date d'inscription vendredi 30 mai 2014 Statut Membre Dernière intervention 27 juin 2016 130
22 mai 2015 à 14:33
oui et ? logique ...

Tu reprends ses arraylist afin de récupérer la partie qu'il te faut et tu affiches le résultat de l'array dans un echo index [1] ou alors
$variableAfficher = index[1];
0