Filtre chaine caractère pour classe FPDF
zoubila44
Messages postés
110
Date d'inscription
Statut
Membre
Dernière intervention
-
zoubila44 Messages postés 110 Date d'inscription Statut Membre Dernière intervention -
zoubila44 Messages postés 110 Date d'inscription Statut Membre Dernière intervention -
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
Merci d'avacne
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:
- Filtre chaine caractère pour classe FPDF
- Caractère ascii - Guide
- Photo filtre 7 gratuit - Télécharger - Retouche d'image
- Caractère spéciaux - Guide
- Caractere speciaux - Guide
- Chaine tnt gratuite sur mobile - Guide
2 réponses
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.
Cette fonction permet de rechercher une occurence dans une chaine et de la renvoyé en tant que tableau.
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)