PHPで "The beer party 2011/2012"のような文字列があります。phpの文と年(数字)を区切ります
私はまだこれらの年と文を2つの異なる配列にする方法を理解できませんか?私は\d+
と\S+\s+
を試してみましたが、組み合わせると、それを使用する方法がわからない
$arr[0] = the beer party;
$arr[1] = 2011/2012 or if its just 2011 then $arr[1] = 2011;
:このように。
PHPで "The beer party 2011/2012"のような文字列があります。phpの文と年(数字)を区切ります
私はまだこれらの年と文を2つの異なる配列にする方法を理解できませんか?私は\d+
と\S+\s+
を試してみましたが、組み合わせると、それを使用する方法がわからない
$arr[0] = the beer party;
$arr[1] = 2011/2012 or if its just 2011 then $arr[1] = 2011;
:このように。
preg_match('/(.*?)\s?(\d{4}(?:\/\d{4})*)$/', $yourString, $matches);
$matches[1]
文$matches[2]
は日付が含まれていますが含まれています。
正規表現 "(。*?)([\ d \ /] +)"などを試してみます。
IS離れてそれを破る:
- 最初のキャプチャグループ、ungreedy方法で、任意の文字(*。?)。 [\ d \ /] - 数字またはリテラル "/"(スラッシュ)です。これは2011 */* 2012のようなものをキャプチャすることです。 ([\ d \ /] +) - 2番目のキャプチャグループが前のステートメントを取得します。
最初のキャプチャグループが欲張りだった場合は、数字リテラルもキャプチャできます。それは不公平なので、2番目のキャプチャグループである最長の貪欲捕捉者を許可するのをやめます。
正規表現の貪欲についての詳細は、http://www.skdevelopment.com/php-regular-expressions.phpを参照してください。
希望すると便利です。
正規表現にエラーがあります。あなたは一致させようとしているリテラルスラッシュをエスケープする必要があります(または異なるデリミタを使用する)。また、あなたの試合は "The beer party/2 2011/2012"のような文字列で壊れます – liquorvicar
正しい!私は実際にそれをエスケープしました。私はそれが何とかテキスタイルで削除されたと思う。 2番目の部分に関しては、これらの例は起こらないと思われました。 –
本当にありがとう、私は正規表現をもっと勉強する必要があります。事はちょうどとても複雑に見えます。 –
ターゲット文字列が(つまりスラッシュで区切られた1つまたは複数の4桁の年で終わる)という形式で常にある場合、あなたはこの
preg_match('/(\d{4}(\/\d{4})*)$/', $string, $matches);
を使用することができますこれは、フォーマット「YYYYの任意の文字列に一致します。 "または" YYYY/YYYY "の文字列を削除して、2つの部分を取得します。
ちょっと単純化できるかもしれませんが、 。 +1。 –