【发布时间】:2014-06-19 14:41:27
【问题描述】:
我想将字符串中的所有标签更改为 [table1]、[table2] 等集合。
例如,
Hello there <table class="table1"><tr><td></td></tr></table>
Some text here
<table class="table2"><tr><td></td></tr></table>
Some text here
<table class="table3"><tr><td></td></tr></table>
收件人:
Hello there [table1]
Some text here
[table2]
Some text here
[table3]
使用
preg_match_all("@\<table (\s\S+)@s", $table_in_string, $match);
foreach ($match[1] as $key => $k) {
}
我这里的正则表达式似乎不起作用。
谢谢。
【问题讨论】:
-
你从哪里得到这个正则表达式?试试
"@\<table(\s\S+)@s" -
把
<table后面的空格去掉就行了regex101.com/r/iQ7oD1 -
我认为使用单个正则表达式是不可能的。不,如果一个表标签也可以继续其他 html 标签。使用正则表达式解析 html 总是一个坏主意。您无法构建在所有可能情况下都有效的正则表达式。 (写下你的正则表达式,我可以给你它无法处理的有效 HTML)
-
我……甚至都懒得去链接。小马。他来了。在人们学会使用正确的工具完成正确的工作之前,他将永远不会停止。
-
嗯,你需要更像这样的东西:s/^(.*)
(.*)$/\2/ this一个行不通,只是为了得到这个想法。
标签: php regex preg-match preg-match-all