[英]How I can check and validate the phone number from an HTML page using php?
我正在嘗試從HTML頁面檢查和驗證電話號碼。
我正在使用以下代碼檢查電話號碼:
<?php
class Validation {
public $default_filters = array(
'phone' => array(
'regex'=>'/^\(?(\d{3})\)?[-\. ]?(\d{3})[-\. ]?(\d{4})$/',
'message' => 'is not a valid US phone number format.'
)
);
public $filter_list = array();
function Validation($filters=false) {
if(is_array($filters)) {
$this->filters = $filters;
} else {
$this->filters = array();
}
}
function validate($filter,$value) {
if(in_array($filter,$this->filters)) {
if(in_array('default_filter',$this->filters[$filter])) {
$f = $this->default_filters[$this->filters[$filter]['default_filter']];
if(in_array('message',$this->filters[$filter])) {
$f['message'] = $this->filters[$filter]['message'];
}
} else {
$f = $this->filters[$filter];
}
} else {
$f = $this->default_filters[$filter];
}
if(!preg_match($f['regex'],$value)) {
$ret = array();
$ret[$filter] = $f['message'];
return $ret;
}
return true;
}
}
該代碼可以很好地用於美國電話號碼驗證。 但是我不明白如何通過一個完整的頁面來提取和檢查HTML頁面中的有效電話號碼? 請幫助我,讓我了解可以做些什么以滿足我的要求。
您想研究cURL 。
cURL是一個計算機軟件項目,提供用於使用各種協議傳輸數據的庫和命令行工具。
您應該從php腳本中獲取頁面(使用cURL或任何您想要的東西)。
從響應cURL給您的電話中找到包含電話號碼的div /輸入。 您可以使用DomXPath之類的庫來做到這一點 (它允許您瀏覽DOM樹)。
https://secure.php.net/manual/en/class.domxpath.php
從電話輸入中獲取節點值,並將其傳遞到您的驗證器中。
那就是我會嘗試的方式。
您的課程實際上並沒有在您要完成的任務中扮演任何角色,因為它只是一些通用的驗證代碼,從未被設計成可以被用作刮板的。 但是,它的有價值的部分(確定美國電話號碼的正則表達式)是公共財產的一部分,因此可以通過多種方式重用(擴展類或從其他類中調用它):
public $default_filters = array(
'phone' => array(
'regex'=>'/^\(?(\d{3})\)?[-\. ]?(\d{3})[-\. ]?(\d{4})$/',
'message' => 'is not a valid US phone number format.'
)
);
例如:
// Scraper is a custom class written by you
$scraper = new Scraper('http://example.com');
$scraper->findByRegularExpression((new Validation())->default_filters['phone']['message']);
當然,這是假設您無法觸摸驗證程序代碼。
如果不編寫冗長的教程或應用程序本身,我無法真正回答總體問題,但是以下是一些入門的快速代碼:
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTMLFile('http://example.com');
libxml_use_internal_errors(false);
$xpath = new DOMXPath($dom);
foreach ($xpath->query('//text()') as $textNode) {
var_dump($textNode->nodeValue);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.