簡體   English   中英

如何使用PHP從段落中提取特定單詞?

[英]How do I extract particular words from a paragraph using PHP?

您好,例如,這是一個純文本段落:

Domain Name: COMCAST.NET
Registrar: CSC CORPORATE DOMAINS, INC.
Whois Server: whois.corporatedomains.com
Referral URL: http://www.cscglobal.com
Name Server: DNS101.COMCAST.NET
Name Server: DNS102.COMCAST.NET
Name Server: DNS103.COMCAST.NET
Name Server: DNS104.COMCAST.NET
Name Server: DNS105.COMCAST.NET
Status: clientTransferProhibited
Updated Date: 21-jan-2010
Creation Date: 25-sep-1997
Expiration Date: 24-sep-2012

如何使用PHP提取特定單詞?

說我需要注冊服務商,名稱服務器和狀態。 我需要不同的變量。 名稱服務器變量可以在數組中,因為它不止一個。

以下是應按要求執行的代碼段:

$lines = explode("\n", $data);

$output = array();
foreach($lines as $line)
{
    list($key, $value) = explode(': ', $line, 2);
    if(isset($output[$key]))
    {
        if(!is_array($output[$key]))
        {
            $tmp_val = $output[$key];
            $output[$key] = array($tmp_val);
        }
        $output[$key][] = $value;
    }
    else
    {
        $output[$key] = $value;
    }
}
print_r($output);

它的作用是:

  • 它將數據分成幾行
  • 獲取鍵/值對
  • 比它附加到輸出數組,在重復鍵上創建額外的嵌套級別

輸出為:

Array
(
    [Domain Name] => COMCAST.NET
    [Registrar] => CSC CORPORATE DOMAINS, INC.
    [Whois Server] => whois.corporatedomains.com
    [Referral URL] => http://www.cscglobal.com
    [Name Server] => Array
        (
            [0] => DNS101.COMCAST.NET
            [1] => DNS102.COMCAST.NET
            [2] => DNS103.COMCAST.NET
            [3] => DNS104.COMCAST.NET
            [4] => DNS105.COMCAST.NET
        )

    [Status] => clientTransferProhibited
    [Updated Date] => 21-jan-2010
    [Creation Date] => 25-sep-1997
    [Expiration Date] => 24-sep-2012
)

您可以使用正則表達式匹配來獲取所需的值,例如

preg_match('^(?P<key>[a-zA-Z\s]):\s(?P<val>.*)$', $text, $matches);
var_dump($matches);

更新:-請使用以下代碼-

preg_match_all('/(?P<key>[a-zA-Z\s]+):\s(?P<val>.*)\n/', $text, $matches);
var_dump($matches);

關於正則表達式,這些被稱為命名子組。 請在http://php.net/manual/en/function.preg-match.php上參考示例4。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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