Class d'objet texte

Contenu du snippet

Cette source permet de créer des objets articles. Il suffit de lui indiquer un fichier texte et celui-ci peut être affiché en HTML. Cette classe prend en compte les paragraphes et les titres. Peut être couplé à une CSS

Conclusion :


<?php
// +----------------------------------------------------------------------+
// | Class Article |
// +----------------------------------------------------------------------+
// | 20 Décembre 2004 |
// +----------------------------------------------------------------------+
// | Cette classe permet de créer un objet article, de parser une fichier |
// | *.txt et de l'afficher au format HMTL |
// +----------------------------------------------------------------------+
//

class Article
{
// CONSTRUCTEUR
//-------------
function Article($fichier)
{
$this->fichier=$fichier;
$this->titreGeneralCssClass="";
$this->titreGeneralCssID="";
$this->titreParagrapheCssClass="";
$this->titreParagrapheCssID="";
$this->paragrapheCssClass="";
$this->paragrapheCssID="";
}

// MUTATORS
//---------
function setTitreGeneralCssClass($class)
{
$this->titreGeneralCssClass=$class;
}
function setTitreGeneralCssID($id)
{
$this->titreGeneralCssID=$id;
}
function setTitreParagrapheCssClass($class)
{
$this->titreParagrapheCssClass=$class;
}
function setTitreParagrapheCssID($id)
{
$this->titreParagrapheCssID=$id;
}
function setParagrapheCSSClass($class)
{
$this->paragrapheCssClass=$class;
}
function setParagrapheCssID($id)
{
$this->paragrapheCssID=$id;
}

// METHODES PUBLIQUES
//-------------------
function articleExiste()
{
if(!empty($this->fichier)) //Le fichier est il stipulé ?
{
$tmp=fopen($this->fichier,"r",FALSE); //Le fichier existe t il ?
if($tmp!=false)
{
fclose($tmp);
return true;
}
else return false;
}
else return false;
}

function affiche()
{
if($this->articleExiste())
{
//Lecture du fichier
$lignes=file($this->fichier);
if(count($lignes)>0)
{

//Considérer la première ligne comme le titre de l'article
echo "<h1 class=\"".$this->titreGeneralCssClass."\" id=\"".$this->titreGeneralCssID."\">\n";
echo htmlentities($lignes[0],ENT_QUOTES);
echo "</h1>\n";

//Ecrire les différentes paragraphes
$paragraphe_ouvert=false;
for($i=1;$i<count($lignes);$i++)
{
//Si une ligne vide
if(strcmp($lignes[$i],"\r\n")==0)
{
//Si la suivante n'est pas un sous-titre (commence par "\ST ")
if($i<count($lignes)-1 && strncmp("\ST",$lignes[$i+1],3)!=0)
{
//Si le paragraphe a été commencé
if($paragraphe_ouvert)
{
echo "</p>\n";
$paragraphe_ouvert=false;
}
//Début de paragraphe
else
{
echo "<p class=\"".$this->paragrapheCssClass."\" id=\"".$this->paragrapheGeneralCssID."\">\n";
$paragraphe_ouvert=true;
}
}
//Si suivante est un sous-titre et paragraphe a été ouvert
else
{
if($paragraphe_ouvert)
{
echo "</p>\n";
}
else
{
echo "<br />";
}
}
}
else
{
if (strlen($lignes[$i])>4 && strncmp("\ST",$lignes[$i],3)==0)
{
echo "<h3 class=\"".$this->titreParagrapheCssClass."\" id=\"".$this->titreParagrapheCssID."\">\n";
echo htmlentities(substr($lignes[$i],4),ENT_QUOTES)."\n";
echo "</h3>\n";
}
else
{
echo htmlentities($lignes[$i],ENT_QUOTES)."\n";
}
}
}
}
}
}
//Champs de la classe
var $fichier; //Nom et chemin du fichier contenant l'article
var $titreGeneralCssID; //Class CSS pour le titre général
var $titreGeneralCssClass; //ID CSS pour le titre général
var $titreParagrapheCssID; //Class CSS pour le titre d'un paragraphe
var $titreParagrapheCssClass; //ID CSS pour le titre d'un paragraphe
var $paragrapheCssID; //Class CSS pour un paragraphe
var $paragrapheCssClass; //ID CSS pour un paragraphe
}

?>

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.