2010-02-23 2 views
1

Возможно ли заменить строки новой строки тегом <br>, но игнорировать строки новой строки, которые следуют тегам </h1>?Замените новые строки на br, но игнорируйте новые строки после h1 в PHP

Так, например, я хочу, чтобы изменить этот блок:

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

Для этого:

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

Почему у вас есть такой код в первую очередь? Кажется, что ваша оригинальная ситуация сама по себе является проблематичной. – newbie

ответ

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. 

должен работать. Это говорит о \ п не предваряется сразу h1>

1

Использование функции строки вместо регулярных выражений, и предполагая, что </h1> тег может быть в любом месте на линии (а не только перед символом новой строки):

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

который , для примера, приводит:

<h1> Test </h1>
некоторые испытания здесь <br /> и здесь <br />