文件获取内容+预匹配
file get contents + preg match
我尝试 return div 上的一个数字,我想要“01 55 33 44”
<div data-phone="01 55 33 44" class="agency_phone ">
Phone
</div>
我试过了:
$url = "myurl";
$raw = file_get_contents($url);
preg_match('/<div data-phone="(.*)"class="agency_phone "/isU',$raw,$output);
echo $output[1];
我没有return,
有人有想法吗?
提前致谢。
是失踪的space吗?
[编辑]
将完整文件放在这里以供复制
[/编辑]
这个有效:
// file url.html
<div data-phone="01 55 33 44" class="agency_phone ">
Phone
</div>
和:
<?php
// file test.php
$raw = file_get_contents('url.html');
preg_match('/data-phone="(.*)" class/',$raw,$output);
echo $output[1]; // 01 55 33 44
index.php
文件有以下内容。
<?php
$url = "test.php";
echo $raw = file_get_contents($url);
preg_match('/data-phone="(.*)" class/', $raw, $output);
echo $output[1];
?>
和其他文件 source.php
有 html 个标签。
<div data-phone="01 55 33 44" class="agency_phone ">
Phone
</div>
它将return跟随数组
Array
(
[0] => data-phone="01 55 33 44" class
[1] => 01 55 33 44
)
在本地主机上使用 html 文件进行测试,似乎工作正常。
<?php
$url = "myurl";
$subject = file_get_contents($url);
$pattern='<div data-phone="(.*)" class="agency_phone ">';
preg_match($pattern, $subject, $output);
echo $output[1];
?>
首先,您的正则表达式期望属性后的 space 正好为零,因此它不会与您的实际 HTML 正好匹配一个 space:
/<div data-phone="(.*)"class="agency_phone "
<div data-phone="01 55 33 44" class="agency_phone ">
在任何情况下都很难使用正则表达式从头开始编写像样的 HTML 解析器。最简单的方法是 DOM 和 XPATH,例如:
<?php
$html = '
<div data-phone="01 55 33 44" class="agency_phone ">
Phone
</div>
<p>Unrelated</p>
<div>Still unrealted</div>
<div data-phone="+34 947 854 712" class="agency_phone ">
Phone
</div>
';
$dom= new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$phones = $xpath->query('//div/@data-phone');
foreach ($phones as $phone) {
var_dump($phone->value);
}
string(11) "01 55 33 44"
string(15) "+34 947 854 712"
我尝试 return div 上的一个数字,我想要“01 55 33 44”
<div data-phone="01 55 33 44" class="agency_phone ">
Phone
</div>
我试过了:
$url = "myurl";
$raw = file_get_contents($url);
preg_match('/<div data-phone="(.*)"class="agency_phone "/isU',$raw,$output);
echo $output[1];
我没有return, 有人有想法吗?
提前致谢。
是失踪的space吗?
[编辑] 将完整文件放在这里以供复制 [/编辑]
这个有效:
// file url.html
<div data-phone="01 55 33 44" class="agency_phone ">
Phone
</div>
和:
<?php
// file test.php
$raw = file_get_contents('url.html');
preg_match('/data-phone="(.*)" class/',$raw,$output);
echo $output[1]; // 01 55 33 44
index.php
文件有以下内容。
<?php
$url = "test.php";
echo $raw = file_get_contents($url);
preg_match('/data-phone="(.*)" class/', $raw, $output);
echo $output[1];
?>
和其他文件 source.php
有 html 个标签。
<div data-phone="01 55 33 44" class="agency_phone ">
Phone
</div>
它将return跟随数组
Array
(
[0] => data-phone="01 55 33 44" class
[1] => 01 55 33 44
)
在本地主机上使用 html 文件进行测试,似乎工作正常。
<?php
$url = "myurl";
$subject = file_get_contents($url);
$pattern='<div data-phone="(.*)" class="agency_phone ">';
preg_match($pattern, $subject, $output);
echo $output[1];
?>
首先,您的正则表达式期望属性后的 space 正好为零,因此它不会与您的实际 HTML 正好匹配一个 space:
/<div data-phone="(.*)"class="agency_phone "
<div data-phone="01 55 33 44" class="agency_phone ">
在任何情况下都很难使用正则表达式从头开始编写像样的 HTML 解析器。最简单的方法是 DOM 和 XPATH,例如:
<?php
$html = '
<div data-phone="01 55 33 44" class="agency_phone ">
Phone
</div>
<p>Unrelated</p>
<div>Still unrealted</div>
<div data-phone="+34 947 854 712" class="agency_phone ">
Phone
</div>
';
$dom= new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$phones = $xpath->query('//div/@data-phone');
foreach ($phones as $phone) {
var_dump($phone->value);
}
string(11) "01 55 33 44"
string(15) "+34 947 854 712"