[PHP] Comment extraire une partie d'un texte ?

Statut
N'est pas ouverte pour d'autres réponses.

Carambar

Elite
Je voudrais améliorer la page news de notre site en ajoutant une ou deux langues. Ces news sont en fait des posts qui figurent dans un forum phpBB dont je vais chercher le contenu avec un script.

Ce que je voudrais faire c'est utiliser les trois langues dans un post représentant les news. Je souhaiterais utiliser un code pour différencier les trois versions différentes avec un code spécifique. Ensuite, j'utiliserais le scripte pour aller chercher le contenu d'un post comme d'habitude pour appliquer une transformation qui permettras d'extraire une partie du post en fonction de la langue voulue.

C'est avec ce dernier point que je ne sais pas comment procéder. Merci d'avance pour toutes les suggestions.
 

Nicdm

yuyu
www.griz.be

contacte le, si t'es gentil il te répondra peut-être :p
 
Alors si j'ai bien compris tu voudrais a partir d'une news mise sur ton forum, la transfèrée vers ton site, tu as déjà ce script il fonctionne nickel, sof k il t affiche tout ... (ds les 3 langues)


Moi ce que je te propose :


tu met des balises qui ne sont pas reconnues par ton forum par exemple : [lang=fr][/lang=fr] ce qui affichera lorske ke le choix de la langue sera le fr, tout ce qui se trouve dasn cette balise ...

En gros tu as besoin de modifier ton scripts, pour k il t affiche une langue de base, et lorske le choix de la langue est fait par l'utilisateur, qu'il n affiche ke ce choix, ton script affichera ce qui se trouve entre ses balises... Puis faire un script ki se rapproche des smiley, qui remplace la chaine de caractere de la balise langue par "rien", str_remplace ou qqchose ds ce genre ;)
Mais sache pour ce que tu veux faire et ce ke j ai compris, tu serras obligé de mettre ces balises affreuse qui seront visible mais non dérangeante sur le forum.
 
1er
OP
Carambar

Carambar

Elite
PunkDeLuxe a dit:
Mais sache pour ce que tu veux faire et ce ke j ai compris, tu serras obligé de mettre ces balises affreuse qui seront visible mais non dérangeante sur le forum.
J'ai déjà une petite idée pour ce qui est des balises :) . Sur le forum, on utilise des petits smilies qui représentent les langues :

:french:
:english:
:dutch:

Si ceux-ci sont placés dans un order bien déterminé (disons anglais, puis francais en néerlandais), pourrait-il servir de balises ? Je vais essayer de trouver des informations sur les différentes fonctions qui existent pour les chaînes de caractéres.
 

MbK_

Etudjant
Nicdm a dit:
www.griz.be

contacte le, si t'es gentil il te répondra peut-être :p
pour l'instant, c'est le blokus alors je ne sais pas si il a le temps...
mais il y a certainement qlq1 de competant et qi n'est pas en blokus
 
Fearless a dit:
PunkDeLuxe a dit:
Mais sache pour ce que tu veux faire et ce ke j ai compris, tu serras obligé de mettre ces balises affreuse qui seront visible mais non dérangeante sur le forum.
J'ai déjà une petite idée pour ce qui est des balises :) . Sur le forum, on utilise des petits smilies qui représentent les langues :

:french:
:english:
:dutch:

Si ceux-ci sont placés dans un order bien déterminé (disons anglais, puis francais en néerlandais), pourrait-il servir de balises ? Je vais essayer de trouver des informations sur les différentes fonctions qui existent pour les chaînes de caractéres.
Oui mais faudrait savoir comment est formater le texte des topic ds la base sql .... si le bbcode est interpreter dès sa création donc si ton smiley est mis ds la base sql en <img src=xxx> ca ne fonctionnera pas, par contre si ton bbcode est laissé tel quel ds la base de donnée, np ;)
 
1er
OP
Carambar

Carambar

Elite
PunkDeLuxe a dit:
Oui mais faudrait savoir comment est formater le texte des topic ds la base sql .... si le bbcode est interpreter dès sa création donc si ton smiley est mis ds la base sql en <img src=xxx> ca ne fonctionnera pas, par contre si ton bbcode est laissé tel quel ds la base de donnée, np ;)
Dans phpBB, je crois que les smilies restent sous leur forme originale et sont seulement interprétés par la suite lors de l'injection dans une template.

En fait j'utilise le script phpBB Fetch All comme intermédaire. Il permet de récupérer uniquement le texte mais je ne sais s'il y a interprétation des smilies ou pas. Il dois y avoir moyen de paramétrer cela.

Bon, si j'arrive à récupérer le texte brute, il reste à couper le texte en fonction en utilisant ":english:", ":french:" et ":dutch:" comme balise. J'ai trouvé une fonction qui pourrais faire l'affaire sur php.net mais il utilise qu'un seule caractére et il faudrais la transformer pour localiser toute une chaîne. Voici le script en question :

http://www.php.net/manual/fr/function.substr.php

biohazard at online dot ge
15-May-2004 01:55
may be by following functions will be easyer to extract the
needed sub parts from a string:

after ('@', 'biohazard@online.ge');
returns 'online.ge'
from the first occurrence of '@'

before ('@', 'biohazard@online.ge');
returns 'biohazard'
from the first occurrence of '@'

between ('@', '.', 'biohazard@online.ge');
returns 'online'
from the first occurrence of '@'

after_last ('[', 'sin[90]*cos[180]');
returns '180]'
from the last occurrence of '['

before_last ('[', 'sin[90]*cos[180]');
returns 'sin[90]*cos['
from the last occurrence of '['

between_last ('[', ']', 'sin[90]*cos[180]');
returns '180'
from the last occurrence of '['


Code:
<?

   function after ($this, $inthat)
   {
       if (!is_bool(strpos($inthat, $this)))
       return substr($inthat, strpos($inthat,$this)+strlen($this));
   };

   function after_last ($this, $inthat)
   {
       if (!is_bool(strrevpos($inthat, $this)))
       return substr($inthat, strrevpos($inthat, $this)+strlen($this));
   };

   function before ($this, $inthat)
   {
       return substr($inthat, 0, strpos($inthat, $this));
   };

   function before_last ($this, $inthat)
   {
       return substr($inthat, 0, strrevpos($inthat, $this));
   };

   function between ($this, $that, $inthat)
   {
     return before($that, after($this, $inthat));
   };

   function between_last ($this, $that, $inthat)
   {
     return after_last($this, before_last($that, $inthat));
   };

   // USES
   function strrevpos($instr, $needle)
   {
       $rev_pos = strpos (strrev($instr), strrev($needle));
       if ($rev_pos===false) return false;
       else return strlen($instr) - $rev_pos - strlen($needle);
   };

?>
 
X

xXFMCXx

ex membre
Le mieux, et le plus simple sans doute, serait que tu recherches dans ta variable, grace à la fonction strpos().
Donc, moi je te conseillerais d'utilisé comme on te la dit plus haut, des séparateurs du type [french] [/french]. Ensuite, tu utilises ta fonction strpos() pour localiser le premier French, et une autre fois strpos() pour localiser le dernier /French.
Et pour finir, tu utilises la fonction substr() et tu indiques les positions de début et de fin, que tu auras réajuster parce que sinon tu risques d'avoir un [French] qui apparaitra au début de ton texte.

J'espère que ce que j'ai écris ne fait pas trop brouillon.
 
1er
OP
Carambar

Carambar

Elite
Merci pour la suggestion. Je vais essayer cette fameuse fonction strpos() et je posterais une réponse si je trouve une partie de solution :) .
 
X

xXFMCXx

ex membre
Bonne chance ;)
 

_gilles

Elite
Un bon livre que je conseille, c'est PHP de CAMPUSPRESS :wink:
 

alan

Elite
Daftdj a dit:
Un bon livre que je conseille, c'est PHP de CAMPUSPRESS :wink:
Une bonne bible que je conseille, c'est NEXEN de nexen
 
K

keep3r

ex membre
dans phpbb les smileys sont directement intérprèté

donc une fois posté le code :smileys est transformé en balise HTML type
Code:
<img src="....." \>
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut