2

これについてはたくさんの質問があることは知っていますが、私がやりたいことをする簡単な方法はないようです。例として、次の文字列を取り上げます。

expires  Friday, December 21, 2012 @ 11:59pm ET
expires  Saturday, December 22, 2012 @ 9:59pm ET

両方の文字列は似ていますが、次のコードに一貫性がありません。

echo substr($string, 14, 27);

次のように出力されます。

Friday, December 21, 2012 @
Saturday, December 21, 2012

明らかに、@記号は保持したくありません。「expires」と「@##:## pmET」を削除しながら日付を保持する方法はありますか?

4

3 に答える 3

5
preg_replace('/expires\s*(.*?)@/', '\1', $string);

また、実際には正規表現を使用する必要はありませんが、見た目が単純なので正規表現を使用します。非正規表現のソリューションは次のとおりです。

//I took 14 from you, but it seems to be 9
substr($string, 14, strpos($string, '@') - strlen($string));
于 2012-12-21T22:55:07.010 に答える
0

http://php.net/manual/wn/function.strpos.phpを見たい

strpos"文字列内で最初に出現する部分文字列の位置を見つける"

したがって、次のようなことをしたいとします。

$string = "expires  Friday, December 21, 2012 @ 11:59pm ET";
$string = str_replace("expires ", "", $string); //remove "expires "
$string = substr($string, 0, strpos($string, "@")-1); // Copy anthing up to the first "@"
echo($string);
于 2012-12-21T23:14:39.033 に答える
0

作業しているサイトでまったく同じ文字列をフォーマットする必要があります。これは私が使用するものです。うまくいくようです:

 <?PHP

function FormatDate($string)
    {
        $exploded = explode(" ", $string);
        $newstring = $exploded['2']." ".$exploded['3']." ".$exploded['4']." ".$exploded['5'];
        return $newstring;
    }

echo FormatDate('expires  Friday, December 21, 2012 @ 11:59pm ET');
于 2012-12-21T23:18:17.783 に答える