簡體   English   中英

PHP:pregmatch輸入字段

[英]PHP: pregmatch input field

我有一個帶有文本輸入字段的html表單。 我想知道如何識別表單中的特定輸入。 示例輸入命令:

<input type="text" name="action" value="bookmark http://google.com" />
<?php
        if ($command == "goto"):
        // go to website X
        elseif ($command == "bookmark"):
        // bookmark website X
        else:
        // something else
        endif;
?>

我認為最簡單的方法是將字符串拆分為第一個空格,將其分隔為命令和該命令的參數。 如果需要,explode()的“2”參數允許在$ param中使用空格。

$input = explode(' ', $_POST['action'], 2);
$command = $input[0];
$param = $input[1];

switch ($command) {
    case 'goto':
        // go to website $param
        break;
    case 'bookmark':
        // bookmark website $param
        break;
    default:
        // unknown command
}

嘗試這個:

$request = $_POST['action'];

$split = explode(' ',$request,2);
$command = $split[0];

if(!isset($split[1])){
    //no url
    die;
}

$url = $split[1];

if($command == "goto"){

    header('location: '.$url);
    die;

}elseif($command == "bookmark"){

    header('location: '.$url);
    die;

}else{

    echo 'No Commands :(';

}

使用$_POST$_GET來檢索請求數據。 即: $_GET['action']

設置標頭位置以重定向瀏覽器。 die; exit; 用於終止和輸出當前腳本

$aAct = explode(' ', $_POST['action');
if(is_array($aAct)) {
    switch($aAct[0]) {
        case 'bookmark':
            /* do action e.g. header('Location: ' . $aAct[1]); */
        break;
    }
}

為您要指定的每個操作創建一個case / break組合。

像這樣的東西?:

//get the command from your value
$command = current(explode(" ", $_POST['action']));

//get the url from your value
$url     = next(explode(" ", $_POST['action']));

正如karim79所述,處理輸入的開關更合適。

switch($command) {

    case 'goto': 
         // do stuff with $url;
         break;
    case 'bookmark': 
         // do stuff with $url;
         break;
    default: // do something default;
}

希望能幫助到你

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM