如何使用PHP从Dynamic Domain中提取信息

时间:2018-06-06 06:40:40

标签: php

您好我试图从HTML页面获取此信息,但它没有元素,类,没有它只有<pre>all content</pre>如何从&#34;中提取值? validTo&#34 ;?以下信息 它不是JSON文件,它只是网页的内容。

[serialNumber] => 984924526890779987

[validFrom] => 180515204024Z

[validTo] => 180807195300Z

[validFrom_time_t] => 1526416824

PHP代码:

    <?php
    $url = "https://www.google.es";
    $orignal_parse = parse_url($url, PHP_URL_HOST);
    $get = stream_context_create(array("ssl" => array("capture_peer_cert" => TRUE)));
    $read = stream_socket_client("ssl://".$orignal_parse.":443", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $get);
    $cert = stream_context_get_params($read);
    $certinfo = openssl_x509_parse($cert['options']['ssl']['peer_certificate']);
echo $certinfo

3 个答案:

答案 0 :(得分:2)

如果页面的格式与您描述的方式相同,则此类内容将起作用

// get the webpage - replace your.url with the actual webpage address
$html = file('your.url',FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES) ;

// get your value 
foreach($html as $line) {
    $result = strpos($line,'[validTo]') ;
    if (false !== $result) {
        $temp = explode('=>', $line) ;
        $validTo = trim($temp[1]) ;
        break ;
    }
}

答案 1 :(得分:0)

考虑您的文件是否包含此内容

  

file.html

[serialNumber] => 984924526890779987
[validFrom] => 180515204024Z
[validTo] => 180807195300Z
[validFrom_time_t] => 1526416824

现在,这将提取信息并将其放入名为$arr的数组中。使用该数组访问每个。

<?php 
    $data = file_get_contents('http://domain/file.html');

    $arr = explode(PHP_EOL, $data);

    echo $arr[0];

?>

答案 2 :(得分:0)

您好,您可以使用Regex从字符串中提取更多信息。

<?php
$string = "
<pre>
    [serialNumber] => 984924526890779987

    [validFrom] => 180515204024Z

    [validTo] => 180807195300Z

    [validFrom_time_t] => 1526416824
</pre>
";

preg_match('/\[validTo\].[\=\>].*[0-9a-zA-Z]/', $string, $values, PREG_OFFSET_CAPTURE);

print_r($values);

结果是:

Array
(
    [0] => Array
        (
            [0] => [validTo] => 180807195300Z
            [1] => 97
        )
)