0

我在表中有域列表,其中包含更多信息和

<td>example1.com</td>
<td>example2.org</td>
<td>example3.com</td>
<td>example4.com</td>

我需要使用正则表达式获取 .com 域。我尝试使用类似的东西:

'<td>(.............).com'

但是我可以写什么来代替点呢?我需要使用什么?

我需要获取标签之间的数据:<td>domain.com</td> -> domain.com

'<td>([^<]+\.com)</td>' 

- 它更好,但我需要没有标签

4

3 回答 3

1
<?php
$html = '<td>example1.com</td>
<td>example2.org</td>
<td>example3.com</td>
<td>example4.com</td>';

$matches = array();
preg_match_all('/<td>(.*?.com)<\/td>/i', $html, $matches);

var_dump($matches[1]);

印刷:

array(3) {
  [0]=>
  string(12) "example1.com"
  [1]=>
  string(12) "example3.com"
  [2]=>
  string(12) "example4.com"
}
于 2013-06-21T21:52:28.420 回答
1

像这样的东西:

'<td>([^<]+\.com)</td>'

但你不应该使用正则表达式来解析 html。

于 2013-06-21T21:51:50.437 回答
0

如果您想捕捉某些东西,但要确保它被其他东西包围,您可以使用前瞻和后视。这里我们.com只捕获。

<?php

$html = '<td>example1.com</td>
<td>example2.org</td>
<td>example3.com</td>
<td>example4.com</td>'; 

$pattern = "!(?<=<td>).*\.com*(?=</td>)!";
preg_match_all($pattern,$html,$matches);

$urls = $matches[0];

print_r($urls);

?>

输出

Array
(
    [0] => example1.com
    [1] => example3.com
    [2] => example4.com
)
于 2013-06-21T22:04:43.187 回答