8797 sujets

Développement web côté serveur, CMS

Salut a tous,

Je voudrais afficher sur plusieurs pages un article stocké dans une BDD. Pour le splitter je voudrais utiliser une expression reguliere, car si j'utilise une fonction plus basique les splits se feront en plein milieu d'une phrase ou meme d'un mot.

Comme je maitrise pas du tout les expressions regulieres j'ai cherché un peu sur le net et j'ai trouve sur http://www.webmasterworld.com/php/3088021.htm la recommendation suivante :

/^.{1400,1500}\ /

Cette expression est sensee selectionner tout ce qui fait entre 1400 et 1500 caracteres du moment que ca se termine par un espace. Dans mon exemple je voudrais que ca se termine plutot par "<br><br>".

Le pb est que j'arrive pas a implementer cette expression. Si par exemple je fais :

$chaine="12<br>34<br>56";
$res=preg_split("/^.{1,10}\<br>/", $chaine);
print_r($res);

Ca m'affiche :

Array ( [0] => [1] => 56 )

Alors que je m'attendais a ce que ca m'affiche plutot Array ( [0] => 12 [1] => 34 [1] => 56)

Quelqu'un peut m'aider?
S'il existe une solution plus simple pour atteindre mon objectif je prend aussi.
Et ajouter des caractères "bizarres" (genre ///) au milieu de ton article pour trouver là où ça doit être splitté, c'est pas possible ?

Dans ma flemme infinie, c'est ce que j'aurais fait. Smiley smile
C'est surement possible mais c'est pas ce que je veux faire. Je veux que ce soit entierement automatique et flexible, non dependant d'un cas particulier.
Salut,

Avec wordwrap(), l'idée de Skoua doit être réalisable sans couper les mots :
$chaineAvecReperes = wordwrap($chaine, 1400, '¨repere¨improbable¨');
$sousChaines = explode('¨repere¨improbable¨', $chaineAvecReperes);
Le truc c'est que je voudrais que la personne qui poste les articles n'aie pas a se soucier de la presentation. Ca doit etre automatique, d'ou la detection automatique des <br><br>.
S'il s'agit de chercher les <br><br> le code suivant devrait suffire

 $chaine="12<br><br>34<br><br>56";
 $res=preg_split("#<br><br>#",$chn);
 print_r($res);

Mais avec un motif "#\.\s#" on pourrait rechercher à séparer des phrases en recherchant un vrai point (d'où l'antislach) suivi d'un blanc (\s qui vaut également pour les tabulations et autres caractères de controle) !

Pour les pages, une expression du type "#^.{1440,1500}(\.\s|<br><br>)#" (avec une alternative pour le séparateur) devrait permettre de les isoler une à une dans une boucle...
Modifié par Julien de Prabere (23 Jul 2009 - 16:34)