2010-03-19 51 views
-1

我正在寻找从整个HTML负载(我刚刚修剪到相关数据)中提取值,有多个'select'元素,并且只想提取那些'name'元素与名称匹配的元素'AMEMBERS'。因此,我想要检索的结果值是5,10,25和30(请参见下文),如何通过preg_match实现此目的?如何使用preg_match提取特定数据?

<DIV id="searchM" class="search"><select name="aMembers" id="aMembers" tabIndex="2"> 
    <option selected="selected" value="">Data 3</option> 
    <option value="5">A name</option> 
    <option value="10">Another name</option> 
</select> 
</DIV> 
<DIV id="searchM" class="search"><select name="bMembers" id="bMembers" tabIndex="2"> 
    <option selected="selected" value="">Data 2</option> 
    <option value="15">A name</option> 
    <option value="20">Another name</option> 
</select> 
</DIV> 
<DIV id="searchM" class="search"><select name="aMembers" id="Members" tabIndex="2"> 
    <option selected="selected" value="">Data 1</option> 
    <option value="25">A name</option> 
    <option value="30">Another name</option> 
</select> 
</DIV> 

回答

-1

我会尝试这个任务分成两个步骤:

  1. 匹配所需的标签
  2. 匹配需要的值在其中

这样会更容易些:

$str = 'your HTML code here...'; 
preg_match_all('|<select name="aMembers".*?</select>|ms', $str, $matches); 
foreach ($matches[0] as $select) { 
    preg_match_all('|value="(.+?)"|', $select, $matches2); 
    var_dump($matches2[1]); 
}