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