>我有一个包含html标签的字符串,我想获取包含关键字"GB"
的整个字符串。
有时<td>
中有不同的类或样式属性,并且标签之间可能有不同的容量,所以我想找到"GB"
或"gb"
,然后在">"
和"<"
之间获取整个字符串......但只是不知道如何...
我的字符串示例如下所示:
$str='<tr>
<td class="table_title13_bg_gray_line" width="171" align="left">Capacity</td>
<td class="table_line_x_h10" width="647" align="left"> 16GB/32GB/64GB/128GB</td>
</tr>';
从上面的字符串中,我想得到字符串"16GB/32GB/64GB/128GB"
任何人都可以让我知道我该怎么办吗?
编辑:并说如果"16GB/32GB/64GB/128GB"
中有一些标签,
前任。 <td class="table_line_x_h10" width="647" align="left"> 16GB/<span style="color:red;">32GB</span>/64GB<br/>128GB</td>
似乎模式$pattern = "/<td ?.*>(.*?)<'/td>/";
不起作用,那么我还能做什么呢?
刚刚尝试并自己解决了这个问题...在这里回答,希望对其他人有用。
$pattern = "/<td ?.*>(.*)<'/td>/";
preg_match_all($pattern, $str, $matches);
foreach( $matches[0] as $key=>$val){
if(preg_match('/GB/i',$val)){
echo $val;
}
}
//output: 16GB/32GB/64GB/128GB
但仍然想知道是否有更好或更简单的方法?
编辑:
好的,我知道了...我真的很讨厌正则表达式...
$pattern = '/[<td ?.*>](.*?)<'/td>/s';
这可以解决如果TD标签之间的字符串包含其他标签的情况...只是一个简单的 []...
如何使用preg_match_all:
$str='<td class="table_line_x_h10" width="647" align="left"> 16GB/<span style="color:red;">32GB</span>/64GB<br/>128GB</td>';
preg_match_all('/('d+GB)/i', $str, $m);
print_r($m);
输出:
Array
(
[0] => Array
(
[0] => 16GB
[1] => 32GB
[2] => 64GB
[3] => 128GB
)
[1] => Array
(
[0] => 16GB
[1] => 32GB
[2] => 64GB
[3] => 128GB
)
)