使用 PHP 将每个 HTML 标签拆分为新行

split each HTML tag into new line using PHP

我要将每个 HTML 标签拆分成一个新行。 这是我的来源:

<p><a href="http://www.example.com">Example Link</a></p>
<div class="text-center"><a href="http://www.example2.com">Example2 Link</a></div>

我会这样:

<p>
<a href="http://www.example.com">Example Link</a>
</p>
<div class="text-center">
<a href="http://www.example2.com">Example2 Link</a>
</div>

或者像这样:

<p>
<a href="http://www.example.com">
Example Link
</a>
</p>
<div class="text-center">
<a href="http://www.example2.com">
Example2 Link
</a>
</div>

这就是我所做的:

$myfile = fopen("html.txt", "r");
for ($i = 0; $i < 1; $i++) {
$line = fgets($myfile);
var_dump(preg_split('/(>)/', $line, 0, PREG_SPLIT_DELIM_CAPTURE));
}

这是将每个“>”放在单独的行(数组成员)中的输出。

array(9) {
  [0]=>
  string(2) "<p"
  [1]=>
  string(1) ">"
  [2]=>
  string(32) "<a href="http://www.example.com""
  [3]=>
  string(1) ">"
  [4]=>
  string(15) "Example Link</a"
  [5]=>
  string(1) ">"
  [6]=>
  string(3) "</p"
  [7]=>
  string(1) ">"
  [8]=>
  string(2) "
"
}

您可以使用 str_replace() 函数将 > / < 替换为 > / < 和换行符,而不是使用正则表达式并将您的源拆分为数组。参见 PHP documentation

这应该可以正常工作:

$formatted = str_replace([">", "<"], [">\n", "\n<"], $x);