Aller au contenu

Problème de compréhension de script


Hells_Dark

Sujets conseillés

Bijour à tous,

Pouvez vous me commenter ceci ? Sans hésiter à tout commenter même ce qui parait simple SVP :

<?php

class style
{
 var $texte;

 function link()
{
 
$in = array(
'`((?:https?|ftp)://\\S+)(\\s|\\z)`',
'`((?<!//)(www\.)\S+)(\s|\z)`',
'`([[:alnum:]]([-_.]?[[:alnum:]])*@[[:alnum:]]([-_.]?[[:alnum:]])*\.([a-z]{2,4}))`'
);

$out = array(
'<a href="$1">$1</a>$2',
' <a href="http://$1" target="_blank">$1</a> ',  
'<a href="mailto:$1">$1</a>'
);

$this->texte = preg_replace($in, $out, $this->texte);
return($this->texte);
}

  function smiley()
 {
 connect($sm);
 $sql='SELECT * FROM site_smileys';
 $req=mysql_query($sql) or die('Erreur SQL ! <br>'.$sql.'<br>'.mysql_error());

 while($data = mysql_fetch_array($req))
 {
 $in = $data['code'];
       $out = $data['url'];  
   $this->texte = str_replace($in,'<img src="../' . $out . '">',$this->texte);
 }
 return ($this->texte);
 mysql_close();
 }


 function affich()
{
 echo ($this->texte);
       }
}


?>

Bourrez moi ça de commentaire et vous serez mon dieu !

Merci ;)

Lien vers le commentaire
Partager sur d’autres sites

Bourrer de commentaires ?

Disons que c'est la description d'un 'objet' de nom ' style', qui sert à remplacer dans un texte :

- les http, ftp, etc par <a href="http:// etc...,

- les racourcis clavier pour des smileys, par les images des smileys

Ca vient très probablement d'un forum, type ipb. les url sont transformées en liens cliquables, et les racourcis claviers sont transformés en images smiley.

Qu'est ce qui t'intéresse, dans ce code ?

Lien vers le commentaire
Partager sur d’autres sites

He bien, certaines des fonctions utilisées m'interressent et étant donné que je trouvais que c'est un bon exemple, je les aurais mieux mémorisée si on me les avait expliqué ici !

L'utilisation du array (je ne suis js pas à l'aise avec) m'intriguait aussi, je ne comprend tjs pas bien leurs utilisations !

je ne comprend pas non plus le début :

class style

{

var $texte;

Ainsi que ceci :

$this->texte = preg_replace($in, $out, $this->texte);

return($this->texte);

je capte pas surtout ça : $this -> texte

et la fonction return....

j'ai déjà lu plein de trucs dessus, mais j'avais déjà pas bien capté, je me suis dis que c'était le moment....;)

Lien vers le commentaire
Partager sur d’autres sites

Pour :

class style

{

var $texte;

Il s'agit d'un objet, donc on le déclare avec le mot : class, de la même façon qu'on déclare les fonctions function... .

Le var $texte : Dans cet objet, il y a des variables. Certaines sont globales (à l'objet), et donc concernent tout l'objet. Là, la variable $texte est utilisée partout dans l'objet. Donc, on ne le déclare qu'une seule fois, au début.

Par contre, pour s'en servir, pour l'appeler, il faut faire :

$this->texte.

Autrement dit : la variable 'texte' de 'cet' objet.

$this->texte = preg_replace($in, $out, $this->texte);

Là, on utilise la fonction preg_replace, dont les paramètres sont :

preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit])

autrement dit : on remplace tout ce qui ressemble à 'pattern', par 'replacement', dans le 'subject'. Pour cet objet, ca donne :

On remplace : $in par $out dans $texte(de cet objet).

Donc, la fonction (qui utilise les expressions régulières), va chercher les morceaux de $texte qui ressemblent à $in, et les remplacer par le texte donné dans $out.

return $texte :

Une fois qu'il a fini, il va retourner la variable $texte. En fait, le remplacement décrit plus haut s'execute dans une fonction. Donc, il faut 'sortir', 'retourner' (return) le résultat. Pour cela, on utilise le mot clé : return. Sinon, la fonction s'executerait, et ne retournerait aucun résultat. Parfois, c'est aussi le but recherché.

Tu peux t'essayer à faire un objet simple, ce n'est pas très compliqué, et très instructif. Il y a un exemple d'objet, dans les publications. Jettes y un oeil, il est plus simple que celui ci (pas d'expressions régulières).

Voilà. N'hésites pas, si tu as d'autres questions ;)

Lien vers le commentaire
Partager sur d’autres sites

Posté (modifié)

Merci beaucoup !

Juste une petite dernière question...

Il suffit que je mette ce code dans celui d'une de mes page pour qu'il change tout les $in en $out ? ;)

Il agit sur TOUTE la page ?

EDIT : je ne trouve pas d'exemple dans les publications.... :blush:

Modifié par Hells_Dark
Lien vers le commentaire
Partager sur d’autres sites

Posté (modifié)

JE ne comprend pas, j'ai inclue la page fonctions.php (contenant la fonction smileys) dans ma page mais elle n'a pas l'air de marcher, faut-il l'activer où que sais je encore ?

Modifié par Hells_Dark
Lien vers le commentaire
Partager sur d’autres sites

Dans ce code :

function smiley()
{
connect($sm);
$sql='SELECT * FROM site_smileys';
$req=mysql_query($sql) or die('Erreur SQL ! <br>'.$sql.'<br>'.mysql_error());

while($data = mysql_fetch_array($req))
{
 $in = $data['code'];
      $out = $data['url'];  
  $this->texte = str_replace($in,'<img src="../' . $out . '">',$this->texte);
 }
return ($this->texte);
mysql_close();
}

il est fait mention d'une connection à une base de données. Si tu n'es pas connectée, alors tu ne peux utiliser ce code.

En fait, ce morceau de code permet d'extraire une liste de smileys d'une base de données, et de remplacer toutes les occurences trouvées dans la variable $texte par leur équivalent extrait de la base.

Tu n'as pas besoin de ce code pour faire le changement. Si tu as d'un coté une liste de smileys, de l'autre une liste d'url pointant vers des smileys, alors tu peux faire les transformations toi même :

$liste_smileys = array(':)',':D');
$liste_url = array('smileys/sourire.gif','smileys/rire.gif');
$texte = str_replace($liste_smileys,'./images/'.$liste_url,$texte);

Ce morceau de code remplacera, dans $texte, tous les smileys comme celui ci .:) en url : ./images/smileys/sourire.gif, et fera ensuite de même pour l'autre smiley.

Tu peux ajouter autant de smileys que tu veux au tableau, en prenant bien soit d'ajouter à chaque fois une url.

Pour utiliser l'objet ci dessus, il faut l'inclure dans une page, puis créer l'objet. On fait ainsi (pas essayé, mais ca doit marcher ainsi) :

//instanciation de l'objet :
$a_style = new style;
// attribuer la variable texte de l'objet :
$a_style->texte = $texte;
// utiliser la méthode smiley de l'objet :
$texte = $a_style->smiley();

Voilà,

Anonymus.

Lien vers le commentaire
Partager sur d’autres sites

Merci ! C'est plus clair ! ;)

Et ça marche !

Par contre j'avais une fonctyion qui listait les smileys, regroupé à du javascript pour avoir des smileys cliquable qui mettait direct le code dans la textarea...

Mais cela ne fonctionnait que sous IE....

Si quelqu'un a une idée...

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...