php regex从表属性中提取列跨度[重复]

dzhpxtsq  于 2023-01-01  发布在  PHP
关注(0)|答案(1)|浏览(104)
    • 此问题在此处已有答案**:

(31个答案)
昨天关门了。
我有一个正则表达式的问题。
我有一个包含多个html标记的大文件,如下所示

<td font = "??" bgcolor="Red" colspan="3" class="??" id="??" ... >

标记在文件中出现多次。
我需要一个php的正则表达式,它只保留colspan而忽略所有其他属性。如果可能的话,我还想用()替换〈〉,所以输出必须是(td colspan ="3")
colspan的值可以是任何数字(不一定是3)。
如果属性colspan不存在,则输出必须为(td)
假设文件的内容存储在名为$file_content的PHP变量中我需要帮助来编写

$file_content_updated = preg_replace('/<td (colspan?)\>/s', '(td$1)', $file_content);
mkshixfv

mkshixfv1#

您可以使用preg_replace来实现这一点。
这是密码:

<?php
$regex = '/(<)td(.*)(colspan)="(\d)"(.*)(>)/i';
$replacement = '(td $3="$4")';

$string = '<td font = "??" bgcolor="Red" colspan="3" class="??" id="??">';

echo preg_replace($regex, $replacement , $string);

正则表达式匹配以下组:

  • 字符<
  • 不管td标签后面是什么
  • 单词colspan
  • 属性colspan的数值
  • colspan属性后面的内容
  • 字符>

如果替换正确,您将得到:

(td colspan="3")

相关问题