2011-12-20 116 views
0

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

<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; 
?> 

回答

2

我認爲最簡單的方法就是分裂第一空間將其分離成一個命令和該命令的參數字符串。如果需要,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 
} 
+0

感謝您的回答! – 2011-12-20 22:53:43

0

嘗試這種情況:

$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;用於終止和輸出電流腳本

+0

$ _ POST [「行動」]將永遠不會「轉到」,但「轉到{URL}」例如 – 2011-12-20 13:11:31

+0

更新,以適應:)一點點額外的 – 2011-12-20 13:24:38

+0

感謝更新! – 2011-12-20 22:54:04

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

製作的情況下/休息組合爲你打算指定的每一個動作..

0

像這樣的事情?:

//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; 
} 

希望它有助於