【问题标题】:Split list with RegEx when the only delimiters are ":" and space当唯一的分隔符是“:”和空格时,使用 RegEx 拆分列表
【发布时间】:2012-10-15 22:33:34
【问题描述】:

我有一个数据列表(字符串),我想使用正则表达式将其拆分为变量:

公司名称:某公司电话:(123) 456-7890 电子邮件:name@domain.com

我想把它送到:

$company = 'Some Company', $phone = '(123) 456-7890', $email ='name@domain.com'

我遇到问题的地方是唯一的分隔符是 ':' 和空格。我还没有开始制定正则表达式模式。我尝试使用explode,但那是将下一个项目添加到最后一个项目上。即;

$pieces = explode(":", $list);
$pieces[0]  // Company Name
$pieces[1] // Some Company Telephone
...

【问题讨论】:

  • Company Name: Email: Telephone: 不也是“分隔符”吗?
  • 我和@PeeHaa 在一起,并且还显示了您到目前为止的代码,我怀疑问题实际上与您的分隔符不同,例如没有按照正确的方式分手。
  • 代码是来自 HTML 页面的纯文本字符串。另外,请参阅我对原始帖子的编辑。
  • 看起来sprintf在这里比爆炸更有用;)

标签: php regex


【解决方案1】:

你可以尝试用正则表达式分割行:

$str = "Company Name: Some Company Telephone: (123) 456-7890 " .
    "Email: name@domain.com";

list(, $company, $telephone, $email) =
    preg_split("/\s*(?:Company Name|Telephone|Email):\s*/", $str);

【讨论】:

  • 您应该尊重原始字符串中元素的顺序。您的正则表达式(还)没有反映这一点。
  • @hakre 这里原始字符串和list 的元素匹配。因此,这可以作为一个基本的解析器。
猜你喜欢
  • 1970-01-01
  • 2017-08-11
  • 2022-12-26
  • 1970-01-01
  • 2019-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多