【问题标题】:PHP - Select part of a string between two charactersPHP - 在两个字符之间选择字符串的一部分
【发布时间】:2011-01-04 11:14:41
【问题描述】:

我一直在对此进行研究,我相信答案是使用正则表达式,但我无法理解它们。

我有很多字符串,我需要在两个字符之间选择一个数字。这是一个示例字符串

&user18339=18339,20070103,175439,pmt,793,A/3/1/2,335,793,A/3/1/2,

我需要出现在A/3/1/2, 之后和以下, 之前的数字

在这个例子中,我需要选择335。我可以使用 explode 来做到这一点,但是当我需要从一个字符串中获取多个数字时会遇到问题,如下例所示。

这是另一个示例字符串

&user31097=31097,20070105,092612,pmt,4190,A/3/1/2,142,1162,A/3/1/1,22,2874,A/3/1/2,1046,4622,A/3/1/2,25,2872,A/3/1/2,

我需要再次获取A/3/1/2, 之后和, 之前的数字。所以在这个例子中,我想使用142104625

如果有人能告诉我如何做到这一点,将不胜感激。

【问题讨论】:

  • 您的示例中出现了多次“A/3/1/2”,但没有具体说明如何处理。
  • 在“pmt”字符串之后是否总是跟随“A/#/#/#”序列的“整数”? (例如,可能出现 1、2、n 次?)
  • 你能给这些值一些语义吗?

标签: php regex string


【解决方案1】:
$string = '&user31097=31097,20070105,092612,pmt,4190,A/3/1/2,142,1162,A/3/1/1,22,2874,A/3/1/2,1046,4622,A/3/1/2,25,2872,A/3/1/2,';
preg_match_all('/A\/3\/1\/2,([0-9]*?),/', $string, $matches);
var_dump($matches);

【讨论】:

  • @JWH89,如果这个答案对你有用,你应该把它标记为已回答。另外,请对任何对您有帮助的答案进行投票。如果某个答案没有有帮助,cmets - 至于为什么它不适合你 - 帮助每个人找出最佳答案。
【解决方案2】:
preg_match_all('/A\/3\/1\/2,([^,]+),/', $input, $matches = array());
print_r($matches);

【讨论】:

  • [^,] 将匹配任何内容,直到 "," 女巫也将匹配一个字符串,他询问如何检索数字而不是全部。
【解决方案3】:
if(preg_match_all('#A/3/1/2,([^,]*),#',$str,$matches)) {                        
        // $matches[1] will have the required results.
}

See it in action

【讨论】:

  • [^,] 将匹配任何内容,直到 "," 女巫也将匹配一个字符串,他询问如何检索数字而不是全部。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-31
  • 1970-01-01
  • 2021-10-30
  • 2013-08-24
  • 2020-03-27
  • 2023-04-09
  • 2017-12-27
相关资源
最近更新 更多