2010-07-02 2 views
1

Comment convertir des uderscores entourant des mots et des phrases d'un morceau de texte en balises italiques avec PHP. Merci d'avance.Convertir les traits de soulignement environnants en tags

Alors -

This is _just_ a test string for the _purposes of this example_. 

deviendrait -

This is <i>just</i> a test string for the <i>purposes of this example</i>. 

Répondre

1

Fondamentalement avec des expressions régulières. Notez que cela peut avoir des effets indésirables, si des traits de soulignement apparaissent ailleurs, par ex. dans les balises et les URL HTML préexistantes. Si c'est le cas, vous devrez aussi expérimenter \ b.

preg_replace('/_(\w[^<>\n]+?\w)_/', '<i>$1</i>', $text); 

Ou, utilisez un analyseur Wiki ready-made, si c'est ce dont vous avez besoin.

+0

Merci Mario et Lézard, ils fonctionnent tous les deux bien mais j'aime la brièveté de celui-ci. Pouvez-vous recommander de bons endroits pour apprendre les expressions régulr? – usertest

+0

@ user201140: Ma ressource préférée est http://www.regular-expressions.info/javascriptexample.html; Il a une vue d'ensemble de Perl et PHP regex meta thingys, et il est souvent plus compréhensible que le manuel PHP ou les pages de manuel Perl. C'est souvent le premier résultat de Google pour les quêtes dans ce domaine. Quoi qu'il en soit, essayez l'outil de test regex. Il existe plus, même des constructeurs/testeurs d'expression régulière de bureau. – mario

2
$content = "This is _just_ a test string for the _purposes of this example_."; 

preg_match_all("|_(.*)_|U",$content,$rows); 

foreach($rows[0] as $key=>$row) { 
    $content = str_replace($row, "<i>".$rows[1][$key]."</i>", $content); 
} 
echo $content; 

Ceci est juste une chaîne de test pour les fins de cet exemple.

Questions connexes