1

私は現在、YouTube リンクを受け取り、ID を解析/正規表現で抽出するフォームを作成しました。この関数は、ボタンのクリックによって実行され、 の ID が出力されますURLIDボタンをクリックせずにページを更新せずに表示する方法はありますか?

if(isset($_POST['ytinput'])){

function getYoutubeId($sYoutubeUrl) {

    # set to zero
    $youtube_id = "";
    $sYoutubeUrl = trim($sYoutubeUrl);

    # the User entered only the eleven chars long id, Case 1
    if(strlen($sYoutubeUrl) === 11) {
        $youtube_id = $sYoutubeUrl;
        return $sYoutubeUrl;
    }

    # the User entered a Url
    else {

        # try to get all Cases
        if (preg_match('~(?:youtube\.com/(?:user/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})~i', $sYoutubeUrl, $match)) {
            $youtube_id = $match[1];
            return $youtube_id;
        }
        # try to get some other channel codes, and fallback extractor
        elseif(preg_match('~http://www.youtube.com/v/([A-Za-z0-9\-_]+).+?|embed\/([0-9A-Za-z-_]{11})|watch\?v\=([0-9A-Za-z-_]{11})|#.*/([0-9A-Za-z-_]{11})~si', $sYoutubeUrl, $match)) {

            for ($i=1; $i<=4; $i++) {
                if (strlen($match[$i])==11) {
                    $youtube_id = $match[$i];
                    break;
                }
            }
            return $youtube_id;
        }
        else {
            $youtube_id = "No valid YoutubeId extracted";
            return $youtube_id;
        }
    }
}


 print 'Result: ' . getYoutubeId($_POST['ytinput']);

}


?>


<form action="" method="POST">
    <input type="text" name="ytinput" value="<? $sYoutubeUrl ?>">
    <input type="submit" value="Parsen">
</form>
4

1 に答える 1

0

これを行う方法は、Javascript を介して Ajax を使用することです。

このソリューションでは、jQuery JavaScript ライブラリを使用する必要があることに注意してください。http://jquery.com/を参照してください。

まず、次のようにして、フォームから URL を取得する必要があります。

var sYoutubeUrl = $('input [name="ytinput"]').val();

次に、関数ファイルに対して Ajax リクエストを行い、結果を取得する必要があります。

$.ajax({
        type: 'get',
        url: '<relative link to function file>/file.php',
        data: 'sYoutubeUrl='+sYoutubeUrl,

        //Catch the result
        success: function(response) {
            //Assign response to a variable
            var youtube_id = response;
            //Display response inside the form
            $('input [name="ytinput"]').val('youtube_id');
        },

    });

これは単なる基本的なガイドです。php ファイルを少し変更し、フォームを POST トリガー フォームから変更する必要があります。また、私が提供したJSをトリガーイベント内に配置する必要があります。おそらくフォーム送信時に次のようになります。

$('form').submit(function() {
   //Code above here
});
于 2013-02-10T00:49:49.170 に答える