如何使用php避免其他标签内的<br/>标签

时间:2019-05-17 03:53:26

标签: php regex dom preg-replace dom-manipulation

由于某些原因,我不想在我的其他标签内使用<br>标签。例如,如果我有

<b>This is a line<br>another line?</b>
<i>testing 1<br>testing 2</i>

我希望将其转换为

<b>This is a line</b><br><b>another line?</b>
<i>testing 1</i><br><i>testing 2</i>

我知道它们在浏览器中显示相同。但是出于某些其他原因,我需要使用这种格式的代码。我正在使用php。谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

此表达式捕获三个组,其中第一个是标签名称,其次是内容,传递<br>,然后滑动其余行:

<(.*)>(.*)<br>(.*)

然后,我们可以进行替换。

RegEx

如果这不是您想要的表达式,则可以在regex101.com中修改/更改表达式。

enter image description here

RegEx电路

您还可以在jex.im中可视化您的表达式:

enter image description here

JavaScript演示

const regex = /<(.*)>(.*)<br>(.*)/gm;
const str = `<b>This is a line<br>another line?</b>
<i>testing 1<br>testing 2</i>`;
const subst = `\n<$1>$2</$1><br><$1>$3`;

// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);

console.log('Substitution result: ', result);

PHP代码

$re = '/<(.*)>(.*)<br>(.*)/m';
$str = '<b>This is a line<br>another line?</b>';
$subst = '<$1>$2</$1><br><$1>$3';

$result = preg_replace($re, $subst, $str);

echo "The result of the substitution is " . $result;