【发布时间】:2013-11-10 11:49:21
【问题描述】:
我正在尝试解析 HTML 标记之间的信息。使用正则表达式,我怎样才能避免标题值,因为它们是不同的,只解析标签内的信息?
HTML 代码:
<p class=period>
<abbr class=dtstart title=2010>2010</abbr>
<abbr class=dtend title=2012>2012</abbr>
</p>
输出应该类似于:2010, 2012
如果title=2010,我正在使用这种方法并且它工作正常:
$experience .= "<c:start_date>". trim($this->parse_text($tmp3[$i], "<abbr class=\"dtstart\" title=\"2010\">", "</abbr>"))."</c:start_date>\r\n";
我试过这个:title=\"(.*)\" 但它不起作用!关于我应该改用哪个正则表达式的任何建议?
非常感谢
【问题讨论】:
-
parse_text()是如何定义的? -
正则表达式为title=(\d+)
-
parse_text 函数:
function parse_text($str, $start, $end) { if(empty($str)) { return; } $pos_start = strpos($str, $start); $pos_end = strpos($str, $end, ($pos_start + strlen($start))); if ( ($pos_start !== false) && ($pos_end !== false) ) { $pos1 = $pos_start + strlen($start); $pos2 = $pos_end - $pos1; return substr($str, $pos1, $pos2); } else return; } -
值得注意的是
parse_text()函数中没有使用正则表达式...