PHP:在字符串中的每个单词上做引号

时间:2015-12-06 02:41:21

标签: php arrays string preg-replace str-replace

PHP的初学者,看起来很有趣。我设法把逗号和“=>”我需要它到处都是,但我也需要在每个单词周围引用。我无法理解如何管理这部分。

我试图用字符串中的键和值来构建一个很好的数组。

  

这是该字符串的开头

$dummy = "ac whois.nic.ac 
          ae whois.aeda.net.ae 
          aero whois.aero 
          af whois.nic.af 
          ag whois.nic.ag 
          ...."
  

我需要的是

"ac" => "whois.nic.ac", 
"ae" => "whois.aeda.net.ae", 
"aero" => "whois.aero", 
"af" => "whois.nic.af", 
"ag" => "whois.nic.ag", 
  

到目前为止我得到了什么......

ac => whois.nic.ac, 
ae => whois.aeda.net.ae, 
aero => whois.aero, 
af => whois.nic.af, 
ag => whois.nic.ag, 

在每个“/ n”

上创建一个逗号
$strg = preg_replace("/(?<![.])(?=[\n\r]|$)/", ",", $dummy);

创建“=&gt;”在每个空间

$strg = str_replace(' ', ' => ', $strg);

欢呼声..

1 个答案:

答案 0 :(得分:0)

我会在不使用preg_replace的情况下执行此操作:

$dummy = "ac whois.nic.ac 
      ae whois.aeda.net.ae 
      aero whois.aero 
      af whois.nic.af 
      ag whois.nic.ag 
      ....";
$lines = preg_split('[\r\n]+', $dummy, null, PREG_SPLIT_NO_EMPTY);
$lines = array_filter(array_map(function($line){
    $line = trim($line);
    $words = explode(" ", $line, 2);
    if(count($words) !== 2) return null;
    return "\"$words[0]\" => \"$words[1]\",";
}));
$output = implode("\n", $lines); // or whatever EOL it was