簡體   English   中英

如何使用php從HTML頁面檢查和驗證電話號碼?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM