Astuces pour les listes

Répondre
Layer
le 28/08/2003 à 11:52
Layer
Lu all !

je poste ce code ça peux toujour servir, c'est un peu barbare mais si vous voulez respecter les normes w3c c'est l'un des moyen que je vous propose

// Un formulaire simple
<form action="test.php" method="post">
<textarea name="txt" cols="10" rows="5"></textarea><br>
<input type="submit">
</form>
<?php

$txt=$_POST['txt'];

// Fonction destiner a encadrer le text avec les balise <li></li>
function item($txt) {
// texte de retour avec la balise d'ouverture
$txt_return = "<ul>\n";

// On ajoute des retour a la ligne car le paramètre qui sera entrer est un tableau
$txt = nl2br($txt[1]);

// On eclate tou ça :)
$tab = explode("",$txt);

// Puis une boucle va compter le nombre d'élement contenu et encradrer cette element
for($i=1;$i<(sizeof($tab)-1);$i++):
$txt_return .= "<li>$tab[$i]</li>\n";
endfor;

$txt_return .= "</ul>\n";

return $txt_return;
}
if($txt):
$txt = nl2br($txt);
$txt = preg_replace_callback('`\[list\](.+?)\[/list\]`si', 'item', $txt);
echo $txt;
endif;
?>


utilisation simple, entrer votre texte comme ceci :
[ list ]
item1
item2
item3
[ / list ]

Note :
[list]
[*]j'ai volontairement séparer les balise avec des espace pour pas que c'est interpréter smiley
[*] a chaque nouvelle objet de la liste vous devez faire un retour a la ligne
[/list]

Comme un script n'est pas forcément terminer ou bien fait, je vous invite donc a optimiser le code ci dessus smiley
Error 500 : internal brain error
XTremTourist
le 28/08/2003 à 12:38
XTremTourist
simpa c a etudier pour le moment je n ai pas le temp d etudier sa mais j mais as de coter
Layer
le 28/08/2003 à 14:03
Layer
Et ceux qui veulent l'intégrer a phpbb :)
fait comme ceci :

<?php
$Text=$_POST['txt'];

function item($Text) {

$txt_return = '';

if($Text[2]==="l"):
$txt_return .= "<ul class=\"listdecimal\">\n";
elseif($Text[2]==="i"):
$txt_return .= "<ul class=\"listlowerroman\">\n";
elseif($Text[2]==="I"):
$txt_return .= "<ul class=\"listupperroman\">\n";
elseif($Text[2]==="a"):
$txt_return .= "<ul class=\"listloweralpha\">\n";
elseif($Text[2]==="A"):
$txt_return .= "<ul class=\"listupperalpha\">\n";
else:
$txt_return .= "<ul class=\"listbullet\">\n";
endif;

$txt = nl2br($Text[3]);
$tab = explode("",$txt);

for($i=1;$i<(sizeof($tab)-1);$i++):
$txt_return .= "<li>".$tab[$i]."</li>\n";
endfor;

$txt_return .= "</ul>\n";
return $txt_return;
}
if($Text):
$Text = nl2br($Text);
$Text = preg_replace_callback('`\[list(=(.+?))?\](.+?)\[/list\]`si', 'item' ,$Text);
echo $Text;
endif;
?>
Error 500 : internal brain error
Layer
le 28/08/2003 à 14:05
Layer
juste un dernier truc (parce que ça a pas afficher)
dans le explode c'est la balise de retour de chariot quil faut mettre smiley les tag html on été effacer
--> {br /} (en mettant un espace et un slashe)
Error 500 : internal brain error
Layer
le 28/08/2003 à 14:13
Layer
petit bug trouver smiley
remplacer for($i=1...
par
[/code]
<?
for($i=0;$i<(sizeof($tab)-1);$i++):
if($tab[$i]==''):
$txt_return .= '';
else:
$txt_return .= "<li>".$tab[$i]."</li>\n";
endif;
endfor;
?>
[/code]
Error 500 : internal brain error
Layer
le 28/08/2003 à 14:23
Layer
smiley encore une faute désoler

<?
for($i=0;$i<(sizeof($tab));$i++):
if($tab[$i]==''):
$txt_return .= '';
else:
$txt_return .= "<li>".$tab[$i]."</li>\n";
endif;
endfor;
?>


et voila smiley
Error 500 : internal brain error
Layer
le 28/08/2003 à 17:58
Layer
la preuve c'est fait avec cette dernière modification (ben oui un autre bug il compte les espaces et les vides malgré le if )

remplacer if($tab[$i]==''):
par if(!ereg("[a-zA-Z]",$tab[$i])):


that all ! (enfin je pense)
smiley
Error 500 : internal brain error
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours