【问题标题】:php - regex - catch string inside multiple tagsphp - 正则表达式 - 捕获多个标签内的字符串
【发布时间】:2010-05-09 19:49:36
【问题描述】:

仍在使用正则表达式! ;-)))

假设我们有一个 html 文件,其中包含很多 <tr> 行,其结构如下所示,其中 (.*?) 是我需要提取的内容!

<tr align=center><th width=5%><a OnClick="(.*?)"href=#>(.*?)</a><td width=5%>(.*?)<td width=5% align=center >(.*?)</td></tr>

更新

也许有一个不错的 preg_match_all()

我需要这样的结果

match[0] . match[1] . match[2] . match[3]

以防万一有人需要类似的东西!

解决我的小问题的方法

/&lt;a\s*OnClick=\"(.*?)\"href=#&gt;(.*?)&lt;\/a&gt;&lt;td[^&gt;]+&gt;(.*?)&lt;td[^&gt;]+&gt;(.*?)&lt;\/td&gt;&lt;\/tr&gt;/m

感谢您的时间!

卢卡·菲洛索菲!

【问题讨论】:

  • 请告诉我你不是在问如何用正则表达式解析 html...恶魔会来...
  • 哦,很好。一周内没有人与该问题相关联,我几乎忘记了。 (/等待...)
  • 好吧,我很懒惰……但既然你问了:stackoverflow.com/questions/1732348/…
  • 问题已更新! ;-))))
  • @prodigitalson:

标签: php regex tags


【解决方案1】:

在这里疯狂地猜测没有实际的样本数据来匹配正则表达式 - 也很不满意在这里必须使用正则表达式。除非您的表格看起来总是一模一样,否则我怀疑您是否会从正则表达式中获得乐趣。

无论如何,抛开所有注意事项,这可能会奏效:

<tr[^>]+><th[^>]+><a OnClick="([^"]+)"\s*href="([^"]+)">([^<]+)</a><td[^>]+>([^<]+)<td[^>]+>([^<]+)</td></tr>

它期望标签(以及&lt;a&gt; 标签中的属性)完全按照这个顺序,在引用的字符串中没有尖括号,在引用的字符串中没有转义的引号等等。(所有这些你不会有的东西担心你是否使用了解析器)。

在 PHP 中:

preg_match_all('%<tr[^>]+><th[^>]+><a OnClick="([^"]+)"\s*href="([^"]+)">([^<]+)</a><td[^>]+>([^<]+)<td[^>]+>([^<]+)</td></tr>%', $subject, $result, PREG_PATTERN_ORDER);

$result then 是一个数组,其中$result[0] 包含整个匹配项,$result[1] 包含捕获组号。 1等。

【讨论】:

  • 不完全是,我在寻找什么......但它帮助了我很多! ps:我在这里通过提问和逐步学习来学习正则表达式! ;-) 再次感谢! &lt;a\s*OnClick=\"(.*?)\"href=#&gt;(.*?)&lt;\/a&gt;&lt;td[^&gt;]+&gt;(.*?)&lt;td[^&gt;]+&gt;(.*?)&lt;\/td&gt;&lt;\/tr&gt;
猜你喜欢
  • 2017-05-15
  • 2011-04-29
  • 2021-01-15
  • 2012-11-14
  • 1970-01-01
  • 2021-12-12
  • 1970-01-01
  • 2012-08-20
  • 2013-08-03
相关资源
最近更新 更多