1

PHP REGEXは私の弱点ですが、それでも私はオンラインツールでいくつかのことを成し遂げることができます。次のことを考慮してください。

一般的にこのパターンに従う件名文字列:1551UTC2012年6月4日

「04」を抽出し、以下を使用して$day変数に割り当てます。

$day = preg_replace("/^([0-9]{4})\s([A-Z]{3})\s([0-9]{2})\s([A-Za-z]{3,})\s([0-9]{4})$/", "$3", $weather['date']);

これは、次のWebサイトで機能します: http ://sqa.fyicenter.com/Online_Test_Tools/Test_Regular_Expression_Search_Replace.php

しかし、スクリプトで機能させることができません...$dayは件名文字列全体に等しくなります。

4

2 に答える 2

2

あなたの結果var_dump()はですstring(38) "1551 UTC 04 June 2012 "。38文字ですが、21文字である必要があります。したがって、文字列には複数の空白があるように見えます。

入力文字列を試してtrim()、に置き換え\s\s+複数の空白をサポートしてください。

$day = preg_replace("/^([0-9]{4})\s+([A-Z]{3})\s+([0-9]{2})\s+([A-Za-z]{3,})\s+([0-9]{4})$/", "$3", trim($weather['date']));
于 2012-06-04T17:39:07.553 に答える
0

preg_replaceと言いますが、preg_match()を使用したいと思います。「04」を置き換えたくないが、それを変数$ dayに入れたいというのは正しいですか?その場合は、preg_match()を使用してください。説明では、「04」の部分のみをキャプチャすると言いますが、正規表現には多くのキャプチャグループがあります(「()」内のすべてがキャプチャグループであり、preg_matchに指定した配列で返されます)。

于 2012-06-04T17:39:02.013 に答える