2010-02-23 6 views
1

Est-il possible de remplacer les nouvelles lignes par la balise <br>, mais d'ignorer les lignes qui suivent une balise </h1>?Remplacer les nouvelles lignes par br mais ignorer les nouvelles lignes après h1 dans PHP

Ainsi, par exemple je veux changer ce bloc:

<h1>Test</h1> \n some test here \n and here 

à ceci:

<h1>Test</h1> some test here <br /> and here 
+0

Pourquoi auriez-vous ce genre de code à la première place? Il semble que votre situation d'origine soit problématique. – newbie

Répondre

1
$subject = "<h1>hithere</h1>\nbut this other\nnewline should be replaced."; 
$new = preg_replace("/(?<!h1\>)\n/","<br/>",$subject); 
echo $new; 

// results in: 
// <h1>hithere</h1> 
// but this other<br/>newline should be replaced. 

devrait fonctionner. Cela dit \ n pas précédé immédiatement h1>

1

Utiliser les fonctions de chaîne au lieu d'expressions régulières, et en supposant que l'étiquette </h1> peut être n'importe où sur la ligne (au lieu de juste avant le saut de ligne):

$lines=file($fn); 
foreach ($lines as $line) { 
    if (stristr("$line", "</h1>") == FALSE) { 
    $line = str_replace("\n", "<br />", $line); 
    } 
    echo $line; 
} 

qui , par votre exemple, se traduit par:

<h1> test </h1>
certains tests ici <br /> et ici <br />

Questions connexes