我在表格中列出了包含更多信息和
的域名<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>'
- 它更好,但我需要没有标签
答案 0 :(得分:1)
类似的东西:
'<td>([^<]+\.com)</td>'
但你不应该使用正则表达式来解析html。
答案 1 :(得分: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"
}
答案 2 :(得分: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
)