Un petit truc pratique lorsqu’on a à traiter une chaîne de texte dont les sections sont séparées par des sauts de ligne (\n ou \r) et qu’on désire séparer tout ça en paragraphes.

Assumons donc que nous avons un texte du genre :

$texte = "Ceci est un paragraphe \n\n En voici un
	deuxième \n\n Et finalement un troisième.";

On s’attend donc à avoir trois paragraphes enrobés de la balise <P> plutôt qu’un seul bloc qui sera converti en de multiples <br />, probablement via la fonction nl2br(). Voici donc l’expression régulière à utiliser pour nettoyer votre texte :

$texte = preg_replace("/(\r\n)+|(\n|\r)+/", "</p><p>", $texte);
$texte = '<p>' . $texte . '</p>';

Notez que si, explicitement dans votre texte, les sauts de ligne sont déjà remplacés par un <BR />, vous n’avez qu’à utiliser cette expression régulière en lieu et place de la première :

//va convertir toutes les multiples instances de <br /> ou <br> ou <BR>
$texte = preg_replace("/(<br\s*\/?[>]\s*)+/i", "</p><p>", $texte );
$texte = '<p>' . $texte . '</p>';

Dans tous les cas, une fois que vous afficherez le texte en question, il ressemblera à ceci :
<P >
Ceci est un paragraphe
</P >
<P >
En voici un deuxième
</P >
<P >
Et finalement un troisième.
</P >

Voici un script utile, un peu à l’image de celui permettant d’aller chercher la dernière image associée à un billet. Ce dernier permet, via une expression régulière (regex) d’extraire l’URL de la première image INSÉRÉE dans un article de blogue (et non attachée comme pièce-jointe).

Il suffit de l’intégrer au fichier functions.php de votre thème :

function getFirstImage() {

global $post, $posts;
$first_img = '';
ob_start();
ob_end_clean();
$output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
$first_img = $matches [1] [0];

if(empty($first_img)) return;

return $first_img;
}

Pour appeler la fonction, il suffit d’intégrer ceci dans le loop :

$img = getFirstImage();

Twitter @emilegirard

RSS Liens partagés

Mots-clefs

Ailleurs

Méta