【问题标题】:split string in php using regex使用正则表达式在php中拆分字符串
【发布时间】:2011-09-01 02:50:14
【问题描述】:

如何拆分这个字符串:

|^^^*|^^^*|^^^*|^^^*|^^^*|myvalue^nao^nao^nao*|myvalue^nao^nao^nao*|myvalue^nao^nao^nao*|^^^*|^^^*|^^^*|^^^*|^^^*|^^^*|^^^*|^^^*|^^^*|^^^*|^^^*|^^^*

所以我只能得到值“mayvalue”。

目前,我正在使用:

$text = preg_split("/[^\|(*.?)\^$]/", $other);

但它返回myvalue^nao

有什么想法吗?

【问题讨论】:

  • 您只是想获取 myvalue 这个词吗?如果是这样,您可以使用单词边界 /bmyvalue/b

标签: php regex arrays string preg-split


【解决方案1】:

你可以分裂两次,一次在|,一次在^;如果你的大字符串在$input,那么:

$pipes = preg_split('/\|/', $input);
$want  = preg_split('/\^/', $pipes[6]);

然后$want[0] 有你所追求的。这可能比尝试提出一个要拆分的正则表达式更容易。

演示:http://ideone.com/pxvay

由于 shesek 还没有回来,我将包括他们建议的方法。您还可以使用 explode 两次,因为您使用的是简单的分隔符:

$pipes = explode('|', $input);
$want  = explode('^', $pipes[6]);

$want[0] 又是你要找的东西。

以及这种方法的演示:http://ideone.com/SwGEH

【讨论】:

  • 如果它只是一个普通字符串,他最好使用explode()...不需要正则表达式
  • @shesek:您应该将其扩展为答案,PHP 不是我的母语,所以我只是使用已有的语言。
  • 谢谢你的时间我的朋友,有了你的回答我可以更接近我想要的。
【解决方案2】:

这将在数组$matches[1] 中将所有“myvalue”和其他字符串放在|^ 之前:

$text = preg_match_all("/\|(.*?)\^.*?\^.*?\^.*?\*/", $other, $matches);

【讨论】:

  • 谢谢。这就是我目前正在寻找的。效果很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-23
相关资源
最近更新 更多