phpInfo.netLes ArchivesLes éléPHPants

  
  Accueil
  Trucs & Astuces
  Scripts
  Regex
  Annuaire
  Articles

.
      
 Astuces   PHP  HTML


Convertir une url ecrite en texte brute en url clicable[30-04-2002]
Posté par scanner

<?php

// urls automatique
$texte = eregi_replace('([[:space:]]|^)(www)', '\\1http://\\2', $texte);    
$prefix = '(http|https|ftp|telnet|news|gopher|file|wais)://';   
$pureUrl = '([[:alnum:]/\n+-=%&:_.~?]+[#[:alnum:]+]*)';

$texte = eregi_replace($prefix.$pureUrl,
            
'<a href="\\1://\\2" target="_blank">\\1://\\2</a>', $texte);

?>


Générer un hyperlien dans un texte[30-04-2002]
Posté par Annie Matteo

<?
function LienDynamique($chaine) {

/*
on a une url si la chaine : " http://xxxx "
est incluse dans la chaine de caractère! à analyser.
*/

$tablo=split(" ",$chaine);

for (
$i=0;$i<count($tablo);$i++){
   if (
strpos(" ".$tablo[$i],"http://")==1 ||
       
strpos(" ".$tablo[$i],"ftp://")==1  ||
       
strpos(" ".$tablo[$i],"news://")==1   )
   {
        print
" <A href='" . $tablo[$i] . "'>";
        print
nl2br($tablo[$i]);
        print
"</a>";
   }
   else
        print
" " . nl2br($tablo[$i]);
}   

}

?>

<HTML><HEAD><TITLE>Génération lien dynamique</TITLE></HEAD><BODY>
<FORM METHOD=POST ACTION='generer_hyperlien.php'>


Saisissez un Texte avec un lien <b>http|ftp|news</B> incorporé
en prenant soin de saisir un espace avant et après le lien;<BR>
voir valeur par défaut ci-dessous :

<P>
<input size=80 NAME='demoTexte'value ='je suis le texte avant le lien
http://www.phpinfo.net/ je suis le texte après le lien'>


<INPUT TYPE='submit' VALUE='Valider'>

</P>

</FORM></BODY></HTML>

<?LienDynamique($demoTexte);?>


Transformer un texte html en texte txt[24-01-2002]
Posté par Corentin Larose

On peut désactiver la fonction strip_tags() car elle supprime aussi les tags "maisons" du type <manger> ou <boire>.

La fonction :

<?
function htm2txt($text)
{
    
// Crée un tableau contenant les codes ascii des caractères
    // ayant un codage en html
    
$ascii_array=array_merge(array(34,38,60,62),range(160,255));
    
    
// Crée un tableau contenant les caractères correspondants
    // aux codes ascci précédents
    
$chars_array=array_map("chr", $ascii_array);
    
    
// Crée un tableau contenant les mêmes caractères au format html
    
$html_array=array_map("htmlentities", $chars_array);

    
// Remplace les codes html par leurs équivalents txt dans le texte
    
for($i=0; $i<count($ascii_array); $i++)
    {
        
$text=ereg_replace($html_array[$i],$chars_array[$i],$text);
    }
        
    
// Remplace les sauts de ligne html <br> par \n dans le texte
    
$text=ereg_replace("<br>","\n",$text);
        
    
// Supprime les éventuelles balises html et php
    
$text=strip_tags($text);

    
// Retourne le texte traité
    
return($text);
}
?>


[1 commentaire]

De MySQL vers HTML[19-01-2002]
Posté par Laurent Decorps

A force de m'arracher les cheveux, je me suis fait cette petite fonction pour afficher le contenu d'un SELECT dans une page HTML.

Quelque soit le type passé (tableau, objet, string et combiné de ces 3 types), la fonction renvoie un contenu débarrassé des antislashes en tenant compte de la configuration des magic_quotes_runtime.
De plus, les caractères interdits dans un texte HTML(&, ", >, <) sont également traités.

<?
function CleanResult($mixedValue)
{
  
$key    = NULL;
  
$list   = NULL;
  
$result = NULL;
  
$gmqr   = get_magic_quotes_runtime();
  
$value  = NULL;

  if (
TRUE == is_array($mixedValue))
  {
    foreach(
$mixedValue as $key => $value)
    {
      if (
TRUE == is_array($mixedValue[$key]) ||
          
TRUE == is_object($mixedValue[$key]))
        
$result[$key] = CleanResult($mixedValue[$key]);
      else
      {
        if (
1 == $gmqr)
          
$result[$key] = htmlspecialchars(stripslashes($value));
        else
          
$result[$key] = htmlspecialchars($value);
      }
    }
  }
  elseif (
TRUE == is_object($mixedValue))
  {
    
$list = get_object_vars($mixedValue);
    
reset($list);
    while (list(
$key,) = each($list))
    {
      if (
TRUE == is_array($mixedValue->$key) ||
          
TRUE == is_object($mixedValue->$key))
        
$result->$key = CleanResult($mixedValue->$key);
      else
      {
        if (
1 == $gmqr)
          
$result->$key = htmlspecialchars(stripslashes($mixedValue->$key));
        else
          
$result->$key = htmlspecialchars($mixedValue->$key);
      }
    }
  }
  elseif (
TRUE == is_string($mixedValue))
  {
    if (
1 == $gmqr)
      
$result = htmlspecialchars(stripslashes($mixedValue));
    else
      
$result = htmlspecialchars($mixedValue);
  }
  return
$result;
}
?>


Liste déroulante dynamique à partir d' un fichier[09-09-2001]
Posté par Didier

Cette fonction permet de créer une liste déroulante dynamique à partir d'un fichier en indiquant le fichier et le nom du select.
Le fichier pour select doit être de la forme "valeur envoyée par le choix ;valeur affichée dans la liste déroulante".

Les blancs et les commentaires commençant par un # sont ignorés.
On peut donc formater le document comme on veut.

Dans le fichier HTML vous pouvez insérer.

<? fselect("fic.txt";"nomduselect"); ?>

Le code :


<?
function fselect($fichier,$nomselect)
{
  print
"<select size=1 name=$nomselect >"."\n";
  print
"<option value=0>Choisir un résultat<option>"."\n";
  
$fp = fopen ("$fichier","r");
  while (!
feof($fp))
  {
    
$ligne = fgets($fp,4096);
    
$ligne=chop($ligne);
    
$resu=explode(";",$ligne);
    if (
$ligne == "" || ereg("^#",$ligne))
    {
      continue;
    }
    else
    {
      print
"<option value=$resu[0]>$resu[1]";
      print
"</option>"."\n";
    }
  }
  print
"</select>"."\n";
}
?>


[1 commentaire]

Permettre les liens malgré strip_tags[19-08-2001]
Posté par idg

Strip_tags() est très pratique mais supprime des informations utiles comme les liens.
L'astuce consiste à remplacer <a href="le_lien"> ... </a> par une autre expression avant strip_tags (ici: [a href="le_lien"] ... [/a]) et rétablir après strip_tags.
C'est le but de cette fonction.

<?
function active_link($chaine)
{

//on remplace <a href... par [a href...
$chaine=preg_replace("/(<a)(.*?)(>)(.*?)(<\/a>)/",
                   
"[a \\2 ] \\4 [/a]",
                   
$chaine);

//on supprime les balises html et php avec strip_tags:
$chaine=strip_tags($chaine);

//on remplace [a href.. par <a href...
$chaine=preg_replace("/(\[a)(.*?)(\])(.*?)(\[\/a\])/",
                   
"<a \\2 > \\4 </a>",
                   
$chaine);

return
$chaine ;
}

$chaine=active_link($chaine);
?>


[4 commentaires]

Pas de cache[03-05-2001]
Posté par Perrich

Afin d'éviter d'avoir son document dans le cache des navigateurs, il suffit d'ajouter en début de fichier (header() oblige) :

<?
  header
("Pragma: no-cache");
  
header("Expires: 0");
  
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
  
header("Cache-Control: no-cache, must-revalidate");
?>


Balises IMG bien dimensionnées[30-10-2000]

Voici une petite fonction qui permet de créer une balise IMG complète sans se soucier de la taille d'une image.

<?
function image($img, $align = "absmiddle")
{
    
$desc = @getimagesize($img);
    
    return(
"<IMG SRC='".$img."' ".$desc[3]." BORDER=0 ALIGN='".$align."'>" );
?>


Sortie écran sans code HTML[26-10-2000]
Posté par Frédéric Bouchery

Voici une fonction pour garder à l'affichage l'indentation d'un texte et les balises HTML (sans qu'elles soient interprétées) :

<?
function SimpleEcho($text) {
  
$ligne = explode("\n",$text);
  
reset($ligne);
  while(
$l = each($ligne)) {
    
ereg('^ *',$l[1],$tab);
    echo
ereg_replace(' ','&nbsp',$tab[0]);
    echo
htmlentities(ereg_replace('^ *','',$l[1]));
    echo
"<BR>";
  }
}
?>


[1 commentaire]

Supprimer les balises HTML d'un texte[05-07-2000]

Pour supprimer les balises HTML d'un texte, vous avez 2 possibilités :

1. Utiliser une fonction toute prête :

<?
  $chaine
= strip_tags($chaine);
?>

2. Utiliser les expressions régulières :

<?
  $chaine
= ereg_replace("<[^>]*>", "", $chaine);
?>


[1 commentaire]

Récupérer les valeurs des balises META[10-05-2000]

Pour récupérer les informations des balises META dans une page HTML, vous pouvez utiliser la fonction get_meta_tags(). Les valeurs des 'meta' deviennent les clés du tableau.

Exemple :

<?
$tabMeta
= get_meta_tags("http://www.phpinfo.net/");
echo
$tabMeta["keywords"]."<BR>";
echo
$tabMeta["description"]."<BR>";
?>


Synseo