Замените символы новой строки на br, но игнорируйте символы новой строки после h1 в PHP - PullRequest
1 голос
/ 23 февраля 2010

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

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

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

К этому:

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

Ответы [ 2 ]

1 голос
/ 23 февраля 2010

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

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

, что, для вашего примера, приводит к:

<h1> Тест </h1>
некоторый тест здесь <br /> и здесь <br />

1 голос
/ 23 февраля 2010
$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.

Должно работать. Это говорит, что \ n не предшествует сразу h1>

...