Mon petit passe-temps du moment : implémenter un tchatbot en PHP. Je me suis inspiré d'un petit projet existant (visant à reproduire ELIZA en PHP) et j’améliore, je modifie, je m'amuse. L'idée n'est pas de créer un tchatbot très intelligent (il n'y a même pas d'apprentissage pour l'instant) mais de voir jusqu'à où je peux aller comme ça.
C'est libre et distribué sous licence LGPL v2.1.
Je l'ai installé sur le minitchat de mon site (http://la-bnbox.fr/). Le mystérieux "Hari S." se met à parler lorsqu'on envoie un message commençant par "@Hari".
Visiblement avec PHP 5.5 il faudra compter avec les Generators (yeld et tout ça...) et je ne suis pas encore opérationnel !!!
Cette librairie pour manipuler du RSS/Atom avec PHP a l'air plutôt simple et efficace.
Eh, je suis dans la liste "Membres Contributeurs" de la communauté FluxBB.fr ! Dingue. Merci, c'est super sympa ça ! Surtout que j'ai certes un peu contribué à un moment, mais c'était il y a longtemps !
ça fonctionne aussi chez 1&1 !!! Je n'avais jamais réussi à corriger cet ennuyeux problème.
Ajouter la ligne suivante :
ini_set('session.save_path', $_SERVER['DOCUMENT_ROOT'].'/../sessions');
J'ai ainsi corrigé le problème sur Shaarli et SnippetVamp et je vais aussi tester pour Leed. Par contre, je ne comprends pas pourquoi cela pose problèmes sur ces applications, et pas sur celles que j'ai développé moi même (dont la dernière en m'inspirant de Shaarli)...
La librairie PGP de PHP.
A lire tranquilement :-)
Ahah ! Excellent ! C'est vrai que bon... des regex pour du HTML, ce n'est peut-être pas la meilleure solution...
J'ai installé la béta 1 de SnippetVamp : http://www.warriordudimanche.net/article157/snippetvamp-beta-1-0 A voir comment je m'en sers.
En tout cas, chapeau WarriorDuDimanche ! Léger, facile à prendre en main, yeah !
Un bon use case d'amélioration d'un composant PHP existant et de la manière de pusher la modification (et de l'utiliser). Si ça fonctionne avec PHP/Composer, Git et Github, cela reste applicable à d'autres technologies.
Dernière itération d'une boucle avec le moteur de template RainTPL :
{loop="list"}
{if="$counter==count($list)-1"}
This is the last element
{/if}
{/loop}
Super ! Mais pourquoi "count($list)" au lieu de "$list|count" ???
J'avais besoin de faire de l'encodage / décodage base 64 en Javascript, et c'est finalement dans la bibliothèque php.js que j'ai trouvé ça ! Je n'y avais jamais songé, mais cette bibliothèque permet finalement de trouver tout un tas d'algo qui peuvent manger dans Javascript.
Composer, c'est le pied. Maintenant, il va falloir apprendre à utiliser quelques outils PHP :-)
Pour avoir pas mal contribuer à la communauté française de ce système de forum, il est plutôt conseillé d'utiliser le fork de PunBB : FluxBB (http://fluxbb.org/). Un jour le concepteur de PunBB a plus ou moins lâché l'équipe de dev en vendant le bébé à une entreprise. Depuis, les plus gros contributeurs ont forké et pas mal de gens ont suivi. La communauté française en tout cas (http://fluxbb.fr/). Les mises à jour sont plus suivies, et suivant d'avantage la vision de la communauté.
L'histoire classique d'un projet libre quoi ;-)
Ceci est super génial ! Merci à Idleman de partager cette trouvaille ;-) Installé chez moi, rapidement testé et déjà approuvé !!
C'est souvent quelque chose qui m'a posé des problèmes... Donc je me vois bien utiliser ce genre de solution à l'avenir.
Dingue, je suis lu :D
J'ai re-testé le script de Timo et c'est impeccable en effet ! Enfin, sur les tests que j'ai effectué. Bien joué encore !
Ah oui les regex. Toujours galère en particulier pour parser du HTML; Je me demande si Le Hollandais Volant nous montrera un exemple d'utilisation.
Personnellement, j'ai testé son script en utilisant le code de son article comme exemple (éhéh !). J'ai quelques balises de titre qui restent, mais c'est peut-être fait exprès... ?
<div id="main">
<section id="midle">
<div id="posts">
<article class="itembloc link" id="20130322003640">
<hgroup class="post-hgr links-hgr">
<h2 class="link-titre"><a href="index.php?mode=links&id=20130322003640">#5292</a> - <a href="http://lehollandaisvolant.net/?mode=links&id=20130322003640">Note : regex pour matcher les balises HTML et les attributs</a></h2>
<h3 class="link-date">Aujourd’hui à 00:36:40</h3>
</hgroup>
<div class="post-cnt links-cnt">
"#<\s*/?(?:[a-zA-Z-]+)(?: (?:\s*\w+=(['\"])(?:(?!\g{1}).|(?:(?<=\\\)\g{1}))+\g{1})*(?:\s*\w*\s*))?/?>#S"<br />
<br />
(en php, en gros : utiliser dans un preg_replace() et les remplacer par une chaine vide agira comme striptags().)<br />
<br />
(oui, les attributs peuvent contenir un « > » ou un « < », par exemple en JS : « 2<=4 », et c’est chiant).<br />
<br />
Un peu de doc complémtentaire :<br />
<a href="http://www.regular-expressions.info/refadv.html">http://www.regular-expressions.info/refadv.html</a><br />
<a href="http://stackoverflow.com/questions/6050427/regex-problem-with-backreference-in-pattern-with-preg-match-all/6051114#6051114">http://stackoverflow.com/questions/6050427/regex-problem-with-backreference-in-pattern-with-preg-match-all/6051114#6051114</a> (commentaire intéressant)<br />
<a href="http://blog.lilhoot.eu/regex-et-preg-assertions-avant-arriere-lookahead-lookbehind-assertions-recuperer-les-chaines,a3">http://blog.lilhoot.eu/regex-et-preg-assertions-avant-arriere-lookahead-lookbehind-assertions-recuperer-les-chaines,a3</a> (en français, très intéressant et très clair)
</div>
</article>
</div> <!-- end postS -->
Devient :
<h2 class="link-titre"> #5292 - Note : regex pour matcher les balises HTML et les attributs </h2>
<h3 class="link-date">Aujourd’hui à 00:36:40</h3>
"#<\s*/?(?:[a-zA-Z-]+)(?: (?:\s*\w+=(['\"])(?:(?!\g{1}).|(?:(?<=\\\)\g{1}))+\g{1})*(?:\s*\w*\s*))?/?>#S"
(en php, en gros : utiliser dans un preg_replace() et les remplacer par une chaine vide agira comme striptags().)
(oui, les attributs peuvent contenir un « > » ou un « < », par exemple en JS : « 2<=4 », et c’est chiant).
Un peu de doc complémtentaire :
http://www.regular-expressions.info/refadv.html
http://stackoverflow.com/questions/6050427/regex-problem-with-backreference-in-pattern-with-preg-match-all/6051114#6051114 (commentaire intéressant)
http://blog.lilhoot.eu/regex-et-preg-assertions-avant-arriere-lookahead-lookbehind-assertions-recuperer-les-chaines,a3 (en français, très intéressant et très clair)
<!-- end postS -->