如何使所有 html 标签与 php 在同一行中关闭
How can I make all html tags close in the same line with php
例如,如果我有
<b>Line 1
Line 2</b>
我想让它变成
<b>Line 1</b>
<b>Line 2</b>
谢谢。
这解决了问题...虽然不知道更多细节,但不确定这是最佳解决方案。
<?php
$string = '<b>Bold Text
Bold Text</b>';
$lines = explode("\n", $string);
$output = implode('</b><b>', $lines);
echo $output;
如果您使用代码,有一种简单的方法可以解决这个问题,尽管通常不赞成使用正则表达式来解析/处理 HTML 或任何标记语言。
首先是模式:
/<b>(.*?)<\/b>/s
这将做的是捕获 <b>
和下一个 </b>
之间的所有内容(不贪婪的),包括标签。
完全匹配将是整个字符串(要替换),捕获的组将是要替换的文本(在代码中稍作修改)。
这样做的方法是获取所有匹配项,然后迭代每个匹配项(从最后到第一个),在 \n
上展开捕获的组,然后用 [=13= 包装每个字符串] 和 </b>
,然后再次用 \n
将其内爆。
用这个结果字符串替换匹配项。这也将处理 <b>
和 </b>
已经在同一行的情况。
PHP 示例:
$string = <<<EOD
<b>Bold Text
Bold Text</b>
Normal Text
Normal Text
<b>Bold Text</b>
EOD;
preg_match_all("/<b>(.*?)<\/b>/s", $string, $matches, PREG_PATTERN_ORDER);
for ($match = count($matches[0]) - 1; $match >= 0; $match--) {
$replace = implode("\n", array_map(function ($str) {
return "<b>".$str."</br>";
}, explode("\n", $matches[1][$match])));
$string = str_replace($matches[0][$match], $replace, $string);
}
echo $string;
将输出:
<b>Bold Text</b>
<b>Bold Text</b>
Normal Text
Normal Text
<b>Bold Text</b>
例如,如果我有
<b>Line 1
Line 2</b>
我想让它变成
<b>Line 1</b>
<b>Line 2</b>
谢谢。
这解决了问题...虽然不知道更多细节,但不确定这是最佳解决方案。
<?php
$string = '<b>Bold Text
Bold Text</b>';
$lines = explode("\n", $string);
$output = implode('</b><b>', $lines);
echo $output;
如果您使用代码,有一种简单的方法可以解决这个问题,尽管通常不赞成使用正则表达式来解析/处理 HTML 或任何标记语言。
首先是模式:
/<b>(.*?)<\/b>/s
这将做的是捕获 <b>
和下一个 </b>
之间的所有内容(不贪婪的),包括标签。
完全匹配将是整个字符串(要替换),捕获的组将是要替换的文本(在代码中稍作修改)。
这样做的方法是获取所有匹配项,然后迭代每个匹配项(从最后到第一个),在 \n
上展开捕获的组,然后用 [=13= 包装每个字符串] 和 </b>
,然后再次用 \n
将其内爆。
用这个结果字符串替换匹配项。这也将处理 <b>
和 </b>
已经在同一行的情况。
PHP 示例:
$string = <<<EOD
<b>Bold Text
Bold Text</b>
Normal Text
Normal Text
<b>Bold Text</b>
EOD;
preg_match_all("/<b>(.*?)<\/b>/s", $string, $matches, PREG_PATTERN_ORDER);
for ($match = count($matches[0]) - 1; $match >= 0; $match--) {
$replace = implode("\n", array_map(function ($str) {
return "<b>".$str."</br>";
}, explode("\n", $matches[1][$match])));
$string = str_replace($matches[0][$match], $replace, $string);
}
echo $string;
将输出:
<b>Bold Text</b>
<b>Bold Text</b>
Normal Text
Normal Text
<b>Bold Text</b>