在php中分隔句子和年份(数字)

时间:2012-03-31 07:51:09

标签: php regex arrays preg-replace preg-match

我在PHP中有一个类似“啤酒派对2011/2012”的字符串。

我仍然无法想象如何将这些年和句子分成两个不同的数组?像这样:

$arr[0] = the beer party;
$arr[1] = 2011/2012 or if its just 2011 then $arr[1] = 2011;

我已尝试\d+\S+\s+,但不知道如何结合使用它。

3 个答案:

答案 0 :(得分:3)

preg_match('/(.*?)\s?(\d{4}(?:\/\d{4})*)$/', $yourString, $matches);

$matches[1]包含句子$matches[2]包含日期。

答案 1 :(得分:1)

我会试试正则表达式“(。*?)([\ d \ /] +)”或类似的。

将它分开是:

(。*?) - 第一个捕获组, ungreedy 方式中的任何字符。 [\ d \ /] - 数字或文字“/”(斜杠)。这是为了捕捉像2011 * / * 2012这样的东西。 ([\ d \ /] +) - 第二个捕获组捕获前一个语句。

如果第一个捕获组是贪婪的,它也可以捕获数字文字。由于它是不合适的,它将停止允许最长的贪婪捕获者,这是第二个捕获组。

有关正则表达式中贪婪的更多信息,您可以查看http://www.skdevelopment.com/php-regular-expressions.php

希望这有帮助!

答案 2 :(得分:0)

如果您的目标字符串始终采用该格式(即以斜杠分隔的一个或多个4位数年份结束),那么您可以使用此

preg_match( '/(\d{4}(\/\d{4})*)$/', $string, $matches );

这将匹配您的字符串中格式为“YYYY”或“YYYY / YYYY”的任何字符串,然后您可以将其删除以获得这两个部分。