9

ユーザーが から00:00:00までの時間を選択できる23:00:00ようにし、正しい形式で送信しているかどうかを確認する必要があります。たとえば、24 時間形式を検証する正規表現または php 関数はありますHH:MM:SSか?

いくつかの正規表現の例を見つけましたが、検証している 24 時間の時間は常に00分と秒に設定されています。時間のみが異なります。

例えば

18:00:00, 23:00:00, 01:00:00
4

7 に答える 7

20

これは、秒を含む 24 時間制に一致します。

([01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]

分と秒に 00 のみが必要な場合は、

([01]?[0-9]|2[0-3]):00:00
于 2012-06-12T22:26:13.810 に答える
2

この関数で確認すると、この関数を CodeIgniter ヘルパー ファイルに追加して、Laravel global helper functions fileさらに呼び出すことができます。

<?php
if(!function_exists("check_24_timeFormat")) {
    /**
     *
     * This for check time is in  24 time format  
     * 
     * @param string $time  [ $time => time in 24 hours format like 23:00:00 ]
     * @author Arafat Thabet <arafat.733011506@gmail.com> 
     * @return bool
     */
    function check_24_timeFormat($time){
        if (preg_match("#((0([0-9])|(1[0-9]{1})|(2[0-4])):([0-5])([0-9]):([0-5])([0-9]))#", $time)) {
            return true;
        }
        else
        {
            return false;
        }
    }
}
于 2020-01-19T19:39:05.443 に答える
0

選択された回答はまったく問題ありませんが、私は形式を押し付けることに固執しているわけではありません。データを解釈できれば、形式は問題にならないという考え方です。もちろん、フォーマットで敗者であるほど、より多くの仮定を立て、より多くのリスクを冒します. しかし、確認画面を提供することで、通常は仮定が修正されます。だから、私は書いた:

/* Sample usage:
 *  echo '<ol>',
 *       '<li>validateTime ("13:23") = ',       (validateTime ('13:23')     ? 'TRUE' : 'FALSE'), '</li>',   // TRUE
 *       '<li>validateTime ("03:23 ") = ',      (validateTime ('03:23 ')    ? 'TRUE' : 'FALSE'), '</li>',   // TRUE
 *       '<li>validateTime ("03:23 Am") = ',    (validateTime ('03:23 aM')  ? 'TRUE' : 'FALSE'), '</li>',   // TRUE
 *       '<li>validateTime ("03:23Am") = ',     (validateTime ('03:23aM')   ? 'TRUE' : 'FALSE'), '</li>',   // TRUE
 *       '<li>validateTime ("03:23 pM") = ',    (validateTime ('03:23 pM')  ? 'TRUE' : 'FALSE'), '</li>',   // TRUE
 *       '<li>validateTime ("323") = ',         (validateTime ('323')       ? 'TRUE' : 'FALSE'), '</li>',   // TRUE
 *       '<li>validateTime ("058") = ',         (validateTime ('058')       ? 'TRUE' : 'FALSE'), '</li>',   // TRUE
 *       '<li>validateTime ("1323pm") = ',      (validateTime ('1323pm')    ? 'TRUE' : 'FALSE'), '</li>',   // TRUE
 *       '<li>validateTime ("1323am") = ',      (validateTime ('1323am')    ? 'TRUE' : 'FALSE'), '</li>',   // TRUE - I think this one makes sense, but I'm not sure. 13th hour of the day, starting in the AM?
 *       '<li>validateTime ("323pm") = ',       (validateTime ('323pm')     ? 'TRUE' : 'FALSE'), '</li>',   // TRUE
 *       '<li>validateTime ("3") = ',           (validateTime ('3')         ? 'TRUE' : 'FALSE'), '</li>',   // TRUE
 *       '<li>validateTime ("3PM") = ',         (validateTime ('3PM')       ? 'TRUE' : 'FALSE'), '</li>',   // TRUE
 *       '<li>validateTime ("13:73") = ',       (validateTime ('13:73')     ? 'TRUE' : 'FALSE'), '</li>',   // FALSE
 *       '<li>validateTime ("25:23") = ',       (validateTime ('25:23')     ? 'TRUE' : 'FALSE'), '</li>',   // FALSE
 *       '<li>validateTime ("Any crap") = ',    (validateTime ('Any crap')  ? 'TRUE' : 'FALSE'), '</li>',   // FALSE
 *       '</ol>';
 */
function validateTime ($testTime)
{
    define ('regExpPattern', '/^([01]?[0-9]|2[0-3])([:]?[0-5][0-9])?[ ]?([apAP][mM])?$/');

/*      regExpPattern explanation
            /^          # String must begin with.
            (           # Start group.
            [01]        # A 0 or 1.
            ?           # Optionally.
            [0-9]       # 0 through 9.
            |           # Or.
            2           # 2.
            [0-3]       # 0 through 3.
            )           # End of group. This group will match hour in a 24 hour clock.
            (           # New group.
            [:]?        # Optional colon.
            [0-5][0-9]  # Minutes, 00 through 59.
            )           # End of group.
            ?           # Make previous group optional.
            [ ]?        # Optional space.
            (           # New group.
            [apAP]      # One of the following 'apAP'.
            [mM]        # One of the following 'mM'.
            )           # End of group.
            ?           # Make previous group optional. This allows for things like 3 o'clock.
            $/          # Must end with. */

    return preg_match (regExpPattern, trim ($testTime));
}   // function validateTime ($testDate)

改善点やバグを見つけたらお知らせください。

他のセパレーターを受け入れる必要がありますか。誰かが 13.45 を入力することを選択した場合はどうなりますか? それは有効な時間であるべきですか?結局、私はユーザーが何を意味するかを知っています。

次のステップは、考えられるすべての形式についてユーザーの入力を取得し、それを SQL に適したものにすることです。

楽しみ、

于 2020-11-02T20:11:29.137 に答える