php - 将 1 个 <br/> 替换为 2 个正则表达式

标签 php regex

我有一根绳子...

$str = 'bob<br /><br />looked so good<br />tonight!';

我想替换只有一个 <br /> 的任何实例有两个。

目前我有...

echo preg_replace('/(<br \/>\s*){1}/', '<br /><br />', $str);

但是这个看跌期权是两个 <br />在鲍勃之后,它应该只在良好的之后。

任何帮助都会很棒!

编辑:输出应该是...

bob<br /><br />looked so good<br /><br />tonight!

最佳答案

基本上你想要一个 <br />前面或后面没有紧接着另一个标记的标记。因此:

/(?<!<br \/>)<br \/>(?!<br \/>)/

这假设所有 <br />标签字面上是 <br />而不是<br> , <br/> ,甚至<br style="clear:both;"> 。为了更好地解析,您应该使用 DOM 解析器并查找 BR前面或后面没有另一个 BR 的节点节点。

关于php - 将 1 个 <br/> 替换为 2 个正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12711361/

相关文章:

MySQL:拆分字段,对每个部分进行字符串替换和连接,然后重新加入

mysql - 在我的 SQL 中使用正则表达式出现错误

php - mysqli 查询 [事件记录 Codeigniter]

php - 使用多个数据库连接访问存储库和实体

php - 使用 __call 调用的函数的返回值

python - 如何在正则表达式的异常中允许字符和空格?

java - 用于分割文件中累积的项目数组的正则表达式行

php - HTML/PHP 调查未正确传递到 MySQL 数据库

php - 对于包含每个用户必须填写的大量复选框的表单,我应该使用什么数据库结构?

python - 使用正则表达式提取某些短语,但排除后跟单词 "of"的短语