Разделите предложение и годы (числа) в php - PullRequest
0 голосов
/ 31 марта 2012

У меня есть строка типа "Пивная вечеринка 2011/2012" в PHP.

Я до сих пор не могу понять, как превратить эти годы и предложение в два разных массива?Вот так:

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

Я пробовал \d+ и \S+\s+, но не знаю, как использовать его в сочетании с.

Ответы [ 3 ]

3 голосов
/ 31 марта 2012
preg_match('/(.*?)\s?(\d{4}(?:\/\d{4})*)$/', $yourString, $matches);

$matches[1] содержит предложение $matches[2] содержит дату.

1 голос
/ 31 марта 2012

Я бы попробовал регулярное выражение "(. *?) ([\ D \ /] +)" или подобное.

Разбить его на:

(. *?)- первая группа захвата, любой персонаж в стиле ungreedy .[\ d \ /] - либо число, либо литерал "/" (косая черта).Это для съемки таких вещей, как 2011 * / * 2012.([\ d \ /] +) - вторая группа захвата захватывает предыдущий оператор.

Если первая группа захвата была жадной, она могла бы также захватить числовые литералы.Так как он нечистый, он остановится, чтобы позволить самому длинному жадному захватчику, который является второй группой захвата.

Для получения дополнительной информации о жадности в регулярных выражениях, вы можете посмотреть в http://www.skdevelopment.com/php-regular-expressions.php.

Hopeэто помогает!

0 голосов
/ 31 марта 2012

Если ваши целевые строки всегда в этом формате (то есть заканчиваются одним или несколькими 4-значными годами, разделенными косой чертой), вы можете использовать это

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

Это будет соответствовать любым строкам формата "ГГГГ "или" ГГГГ / ГГГГ "в строке, которую можно затем удалить, чтобы получить две части.

...