正则表达式获取某些符号的数据

时间:2011-08-16 20:18:20

标签: php regex

我正在使用

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&#160;1.&#160;&#160;</FONT></B> 
</TD> 
<TD> 


<A name='Y86310103'> 
<DIV style="margin-top: 4pt; font-size: 1pt">&nbsp;</DIV> 

<DIV align="left" style="margin-left: 0%; margin-right: 0%; font-size: 10pt; font-family: Arial, Helvetica; color: #000000; background: transparent"> 

我想要

Item&#160;1.

另一个输入示例是

<TD WIDTH="9%" VALIGN="top" ALIGN="left"><FONT STYLE="font-family:Times New Roman"    SIZE="2"><B><U>ITEM&nbsp;1.</U></B></FONT></TD> 
<TD ALIGN="left" VALIGN="top"><FONT STYLE="font-family:Times New Roman" SIZE="2"><B>

我想要

 ITEM&nbsp;1.

实际上,我想在html文件中获得“第1项”的位置。 还有其他类似的条目,如“项目1a。”,“项目11”

Item&#160;13.&#160;&#160;
Item&#160;60l

我不需要这些信息。

感谢!

3 个答案:

答案 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&#160;1.&#160;&#160;</FONT></B> 
</TD> 
<TD> 
<A name='Y86310103'> 
<DIV style="margin-top: 4pt; font-size: 1pt">&nbsp;</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"