Accueil > Développement > Une vieillerie

Une vieillerie

mercredi 8 octobre 2008, par Fil

Retrouvée sur mon disque dur :

<?php
/* *******************************************************************
   SPIPLIB -- ensemble de fonctions pratiques pour SPIP/PHP

   Ecrire à <spip@atlas.bok.net> ; cette version = 0.0.2    30/05/2000
   ***************************************************************** */

// si on a déjà été chargé, on ne fait rien
if ( ! $spip_lib ) {
	$spip_lib = 1;


/* *******************************************************************
   On déclare ici les variables globales qui devront ensuite passer
   dans un fichier spip_config.inc                                   */

	$spip_table_ouvre = "<P align='center'><TABLE CELLPADDING=4><TR><TD ALIGN='center' BGCOLOR='#DDDDDD'>";
	$spip_table_ferme = "</TABLE><P>";
	$spip_table_element = "<TR><TD ALIGN='center' BGCOLOR='#DDDDDD'>";
	$spip_table_fin_element = "</TR>";
	$spip_table_case = "<TD ALIGN='center' BGCOLOR='#DDDDDD'>";
	$spip_li = '<BR><IMG SRC="/img/triangle.gif" ALT="&gt;" WIDTH=8 HEIGHT=7 ALIGN=bottom> ';


/* *******************************************************************
   PROPRE :   cette fonction est destinée à prendre un texte simple
   dans un formulaire web et de le nettoyer, tout en assurant un
   minimum de formatage avec des règles simples                     */

function propre($letexte){

	global
		$spip_table_ouvre,
		$spip_table_ferme,
		$spip_table_element,
		$spip_table_fin_element,
		$spip_table_case,
		$spip_li ;

	// sauts de ligne
	$letexte=ereg_replace("\r","\n",$letexte);

	// tirets long
	$letexte = ereg_replace("-","-",$letexte);
	$letexte = ereg_replace("&emdash;","-",$letexte);
	$letexte = ereg_replace("&endash;","-",$letexte);

	// espace dur (a revoir  | ici un espace "dur"
	//                       V    à coder en ascii
	$letexte = ereg_replace(" ","~",$letexte);
	$letexte = ereg_replace("&nbsp;","~",$letexte);

	// guillemets
	$letexte = ereg_replace("&#171","«",$letexte);
	$letexte = ereg_replace("»","»",$letexte);
	$letexte = ereg_replace(""","\"",$letexte);
	$letexte = ereg_replace(""","\"",$letexte);

	// caracteres non-ISO ou échappés (PAS CLAIR les guillemets)
	$letexte = ereg_replace("…","...",$letexte);
	$letexte = ereg_replace("œ","oe",$letexte);
	$letexte = ereg_replace("\'","'",$letexte);	// ?
	$letexte = ereg_replace("\'","'",$letexte);	// ?
	$letexte = ereg_replace('\\\"',"\"",$letexte);	// ?
	$letexte = ereg_replace('\\\\\'',"'",$letexte);	// ?

	// tableau
	if (ereg("\n\n\|",$letexte)){
		$letexte = ereg_replace("\n\n\n\|",$spip_table_ouvre,$letexte);
		$letexte = ereg_replace("\|\n\n\n","|".$spip_table_ferme,$letexte);
		$letexte = ereg_replace("\n\|",$spip_table_element,$letexte);
		$letexte = ereg_replace("\|\n",$spip_table_fin_element,$letexte);
		$letexte = ereg_replace("\|",$spip_table_case,$letexte);
	}

	// paragraphe
	$letexte = ereg_replace("(\n( *)){3,}","<P>\n",$letexte);

	// les sauts de ligne inutiles en fin de texte
	/* Arno : explique-moi comment il peut rester du \r dans la variable ? */
	$letexte = ereg_replace("([\r]*[\n]*)*$","",$letexte);

	// liste d'items
	$letexte = ereg_replace("--",$spip_li,$letexte);
	$letexte = ereg_replace("^-",$spip_li,$letexte);
	$letexte = ereg_replace("\n-",$spip_li,$letexte);

	// typo
	$letexte = ereg_replace("\n\{(.{1,2})\}","\n<B><font size=6>\\1</font></B>",$letexte);
	$letexte = ereg_replace("\{\{\{","<H4>",$letexte);
	$letexte = ereg_replace("\}\}\}","</H4>",$letexte);
	$letexte = ereg_replace("\{\{","<B>",$letexte);
	$letexte = ereg_replace("\}\}","</B>",$letexte);
	$letexte = ereg_replace("\{","<I>",$letexte);
	$letexte = ereg_replace("\}","</I>",$letexte);
/* attention il peut y avoir des ~ dans les URLS */
	$letexte = ereg_replace("[ ~]*([:;!?»%])","~\\1",$letexte);
	$letexte = ereg_replace("([«])[ ~]*","\\1~",$letexte);
	$letexte = ereg_replace("(~+)","&nbsp;",$letexte);
	
	//   **** bizarrerie ? ****
	$letexte = ereg_replace("¥([^¥]*)¥","<B>\\1</B>",$letexte);

	// lien sans URL apparente [ Mot -> http://... ]
	$letexte = ereg_replace("\[([^\[]*)->([^\[]*)\]","<A HREF='\\2' target='new'>\\1</A>",$letexte);

	// lien sur URL
	$letexte = ereg_replace("(http|ftp|mailto)&nbsp;://","\\1://",$letexte);
	$letexte = ereg_replace("(<BR>){2,}","<P>",$letexte);
	$letexte = ereg_replace("<P>(<BR>){1,}","<P>",$letexte);

	return $letexte;
}


/* *******************************************************************
    SUPGUILL : supprime les guillemets ajoutes par Excel(tm)
    et contourne le probleme des <A href> interpretes par Excel (tm)
    en utilisant { et } comme caractères de rechange ; très utile
    lorsqu'on utilise des tableaux texte/tabulation en guise de
    petites bases de données                                         */

function supguill ($reg)
{
	$reg = ereg_replace( "(\"\t|\t\"|\"\t\")","\t",$reg);
	$reg = ereg_replace( "\"$","",$reg);
	$reg = ereg_replace( "\"\n","\n",$reg);
	$reg = ereg_replace( "^\"","",$reg);
	$reg = ereg_replace( "\"\"","\"",$reg);
	$reg = ereg_replace( "\{","<",$reg);
	$reg = ereg_replace( "\}",">",$reg);
	$reg = ereg_replace( "\'","'",$reg);
	$reg = ereg_replace(""","“",$reg);
	$reg = ereg_replace(""","”",$reg);
	$reg = ereg_replace("…","...",$reg);
	return $reg;
}


/* *******************************************************************
    FUSIONURL : prend un URL de base et un lien, et les mixe.
    Exemple : si $url = "http://serveur/dossier/ ;
    $lien = "http://autre-serveur"  -> inchangé
    $lien = "/autredossier" -> "http://serveur/autredossier
    $lien = "sousdossier" -> "http://serveur/dossier/soudossier"    */

function fusionurl($url, $lien) {
	if (eregi("^mailto:",$lien,$regs)){
		return $lien;
	}else{
		$liene = parse_url($lien);
		if ($liene[host]) return($lien);
		$ure = parse_url($url);
		if ($ure[port]) $ure[port]=":".$ure[port];
		if (substr($liene[path],0,1)=="/") { return($ure[scheme]."://".$ure[host].$ure[port].$liene[path].$liene[query].$liene[fragment]); } else 
		{ return($ure[scheme]."://".$ure[host].$ure[port].$ure[path]."/".$liene[path].$liene[query]); };
	}
}


/* *******************************************************************
    AFFDATE : prend une date sous un des formats suivants et retourne
    sa valeur en français (ou anglais si deuxieme para="en").
          19/01/72 ; 1972-01-19 ; 2000-07

    peut affecter $spip_date_de : pour faire, par exemple,
	$date_francais = affdate ($date);
	print "les données ".$spip_date_de.$date_francais ;
	> les données d'août 2000   /    les données de juillet 2000    */
   
function affdate($numdate,$lang="fr") {

	global
		$spip_date_de;

	if (ereg("([0-9]{1,2})\/([0-9]{1,2})\/([0-9]{1,2})",$numdate,$regs)){
		$mois = $regs[2];
		$jour = $regs[1];
		$annee = $regs[3];
		// si Excel (tm) se mêle des dates, il faut les démêler
		if ($annee < 90){
			$annee = 2000 +$annee;
		} else {
			$annee = 1900+$annee ;
		}
		$datevue = 3;
	} elseif (ereg("([0-9]{4})-([0-9]{2})-([0-9]{2})",$numdate,$regs)){
		$mois=$regs[2];
		$jour=$regs[3];
		$annee=$regs[1];
		$datevue = 3;
	} elseif (ereg("([0-9]{4})-([0-9]{2})",$numdate,$regs)){
		$mois=$regs[2];
		$annee=$regs[1];
		$datevue = 2;
	}

	if (substr($jour,0,1)=="0") $jour=substr($jour,1,1);

	if (($lang == "") || ($lang =="fr")){
		if (strcmp($jour,"1")==0) $jour="1er";
		if ($jour) $jour .= " ";
		if ($mois==1) {$mois="janvier"; $spip_date_de="de ";}
		if ($mois==2) {$mois="février"; $spip_date_de="de ";}
		if ($mois==3) {$mois="mars"; $spip_date_de="de ";}
		if ($mois==4) {$mois="avril"; $spip_date_de="d'";}
		if ($mois==5) {$mois="mai"; $spip_date_de="de ";}
		if ($mois==6) {$mois="juin"; $spip_date_de="de ";}
		if ($mois==7) {$mois="juillet"; $spip_date_de="de ";}
		if ($mois==8) {$mois="août"; $spip_date_de="d'";}
		if ($mois==9) {$mois="septembre"; $spip_date_de="de ";}
		if ($mois==10){$mois="octobre"; $spip_date_de="d'";}
		if ($mois==11){$mois="novembre"; $spip_date_de="de ";}
		if ($mois==12){$mois="décembre"; $spip_date_de="de ";}
	} elseif ($lang == "en"){
		if (strcmp($jour,"1")==0) $jour="1st";
		if ($jour) $jour .= " ";
		if ($mois==1) {$mois="January";}
		if ($mois==2) {$mois="February";}
		if ($mois==3) {$mois="March";}
		if ($mois==4) {$mois="April";}
		if ($mois==5) {$mois="May";}
		if ($mois==6) {$mois="June";}
		if ($mois==7) {$mois="July";}
		if ($mois==8) {$mois="August";}
		if ($mois==9) {$mois="September";}
		if ($mois==10){$mois="October";}
		if ($mois==11){$mois="November";}
		if ($mois==12){$mois="December";}
	}
   if ($datevue){
	$res=sprintf("%s%s %s",$jour,$mois,$annee); 
	return $res;
   }
}

/* *******************************************************************
    MAJUSCULES : passe un texte en majuscules y compris les accents */

function majuscules($texte){
	$texte=htmlentities($texte);
	$texte=strtoupper($texte);
	$texte=eregi_replace("\&","&",$texte);
	$texte=eregi_replace("\&(.)acute;","&\\1acute;",$texte);
	$texte=eregi_replace("\&(.)circ;","&\\1circ;",$texte);
 	$texte=eregi_replace("\&(.)grave;","&\\1grave;",$texte);
 	$texte=eregi_replace("\&(.)uml;","&\\1uml;",$texte);

 	return $texte;
}

// fin de la librairie
}
/* ******************************************************************* */
?>

Messages

Un message, un commentaire ?

Qui êtes-vous ?
Se connecter
Votre message

Ce formulaire accepte les raccourcis SPIP [->url] {{gras}} {italique} <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.