我正在使用
preg_match_all ("#Item(.*?)1\.#si", $file, $matches);
我希望获得“第1项”之类的结果。或
Item  1.
但现在我得到了类似“Item 405”的内容
Item 9B.  
Item 13.  
有什么建议吗?
示例输入
<TR valign="top">
<TD>
<B><FONT style="font-family: 'Times New Roman', Times">Item 1.  </FONT></B>
</TD>
<TD>
<A name='Y86310103'>
<DIV style="margin-top: 4pt; font-size: 1pt"> </DIV>
<DIV align="left" style="margin-left: 0%; margin-right: 0%; font-size: 10pt; font-family: Arial, Helvetica; color: #000000; background: transparent">
我想要
Item 1.
另一个输入示例是
<TD WIDTH="9%" VALIGN="top" ALIGN="left"><FONT STYLE="font-family:Times New Roman" SIZE="2"><B><U>ITEM 1.</U></B></FONT></TD>
<TD ALIGN="left" VALIGN="top"><FONT STYLE="font-family:Times New Roman" SIZE="2"><B>
我想要
ITEM 1.
实际上,我想在html文件中获得“第1项”的位置。 还有其他类似的条目,如“项目1a。”,“项目11”
Item 13.  
Item 60l
我不需要这些信息。
感谢!
答案 0 :(得分:2)
你的正则表达式符合你的期望(据我所知)。见here online in the regex tester Regexr。
这是开发和测试正则表达式的有用工具,我认为它可以帮助您解决问题。
答案 1 :(得分:1)
试试这个正则表达式:
"#Item(&\#160;|\s)1\.#si"
将“1”更改为您正在搜索的内容 - 也许您可以告诉我们更多相关内容。
答案 2 :(得分:1)
尝试:
$file = <<< EOF
<TR valign="top">
<TD>
<B><FONT style="font-family: 'Times New Roman', Times">Item 1.  </FONT></B>
</TD>
<TD>
<A name='Y86310103'>
<DIV style="margin-top: 4pt; font-size: 1pt"> </DIV>
<DIV align="left" style="margin-left: 0%; margin-right: 0%; font-size: 10pt; font-family: Arial, Helvetica; color: #000000; background: transparent">
EOF;
preg_match_all('/(Item)(?:&.*?)?;(\w+)/i', $file, $matches, PREG_PATTERN_ORDER);
$match = $matches[1][0]." ". $matches[2][0];
echo $match; // echo's "Item 9B"