首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式和制表符分隔的数据文件

问正则表达式和制表符分隔的数据文件
EN

Stack Overflow用户
提问于 2014-02-24 23:39:32
回答 1查看 75关注 0票数 0

我想构建一个制表符分隔的数据文件。我正在使用正则表达式来提取所需的信息,即注册人姓名,注册人电子邮件和域名。我希望代码以制表符分隔的格式输出每个域查找的结果。你能给我一些关于如何实现这一点的提示吗?

代码语言:javascript
复制
<?php

     require 'Net/Whois.php';
     $server = 'whois.networksolutions.com';


    $content=file('query-file.txt');

    foreach ($content as $query)

    { 


    $whois = new Net_Whois;
    $data = $whois->query($query, $server);

               if (preg_match_all('/^registrant name: (.*)/im', $data, $matches, PREG_SET_ORDER))

                    // Print the matches:
                    {
                            echo '<pre>' .  $matches[0][1] .  '</pre>';

                     } else {

                     echo 'not found!</p>';
                     }  


      if (preg_match_all('/^registrant email: (.*)/im', $data, $email, PREG_SET_ORDER))

                    // Print the matches:
                    {
                            echo '<pre>' .  $email[0][1] .  '</pre>';

                     } else {

                     echo 'not found!</p>';
                     }      

        if (preg_match_all('/^Domain Name: (.*)/im', $data, $email, PREG_SET_ORDER))

                    // Print the matches:
                    {
                            echo '<pre>' .  $email[0][1] .  '</pre>';

                     } else {

                     echo 'not found!</p>';
                     }                    


    }

?> 

代码的输出

代码语言:javascript
复制
Dns Admin

dns-admin@google.com

google.com

not found!

not found!

not found!

Domain Name Manager

tmgroup@turner.com

cnn.com

Domain Administrator

domains@microsoft.com

msn.com

Domain Administrator

domains@microsoft.com

hotmail.com

Domain Administrator

domainadmin@yahoo-inc.com

yahoo.com

DNS Admin

gmail-abuse@google.com

gmail.com

所需的输出应如下所示

代码语言:javascript
复制
Dns Admin   dns-admin@google.com   google.com
Domain Name Manager   tmgroup@turner.com    cnn.com
Domain Administrator   domains@microsoft.com   msn.com

...
EN

回答 1

Stack Overflow用户

发布于 2014-02-24 23:50:42

将每个if语句的数据保存到一个数组中,而不是echo:

代码语言:javascript
复制
$data[] = $matches[0][1];

否则

代码语言:javascript
复制
$data[] = 'not found!';

然后在循环的末尾(在最后一个if之后),使用制表符连接数据:

代码语言:javascript
复制
$lines[] = implode("\t", $data) . "\n";

然后在循环结束后(})将行保存到一个文件中:

代码语言:javascript
复制
file_put_contents('path/to/file.txt', $lines);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21992178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档