php - 正则表达式替换 - 节点之间的数字

标签 php regex

这是我的正则表达式:

\^((<i><b>|<b><i>)(\d+)(\<\/b>\<\/i>|\<\/i>\<\/b>))?\s+/mi

它应该捕获 <i><b>14</b></i> some text

好消息是它捕获了 <i><b>14</b></i>\1这是我该函数的第 1 步所需要的。

坏消息是我不知道如何编写替换变量来捕获 14并将其替换为数字 1

我尝试的是\21\4 ,其中\2代表<i><b>\4代表</b></i>但整个事情被解释为 \21不是\2\2 之后没有空格

编写替换变量的正确方法是什么?

最佳答案

您可以使用这个基于环视的正则表达式:

$re = '~(?:<[bi]>)*\b(\d+)\b(?:</[bi]>)*~m';
$str = preg_replace($re, '$0 :: $1', '<i><b>14</b></i>');
//=> <i><b>14</b></i> :: 14

尽管使用 DOM 解析器解析 HTML 然后对其进行操作会更安全。

关于php - 正则表达式替换 - 节点之间的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21695327/

相关文章:

php - Laravel - 如何通过 hasMany 中的相关属性进行排序

php - 如何从查询字符串中获取 boolean 值?

php - 尝试提取数据并将其输入到下拉菜单中,但似乎没有提取任何内容?我错过了什么吗?

php - 登录回显不起作用

regex - 匹配除包含 '_iq_' 以外的所有内容

python - 字符串的映射特征是否有助于更快地解析字符串?

jQuery:找到所有图像链接并将它们转换为一些默认拇指?

php - 在这个例子中如何正确返回类值? PHP

javascript - jquery:查找并替换所有具有匹配模式的 id 属性

Javascript Regular Expression 获取大括号之间的内容(里面有大括号)