2016-02-25 31 views
0

好的。這是我的代碼:PHP str_replace函數不更換正確

<?php if(empty($_GET['keywords'])) 
    { 
     echo "Latest jobs in ".$_GET['loc']; 
    } 
    elseif(empty($_GET['loc'])) 
    { 
     echo "Latest ".$_GET['keywords']." jobs"; 
    } 
    elseif(empty($_GET['keywords']) && ($_GET['loc'])) 
    { 
     echo "BLAH"; 
    } 
    else 
    { 
     echo "Latest ".$_GET['keywords']." jobs in ".$_GET['loc']; 
    } 
    ?> 

在索引頁面有2個表單域,關鍵字&祿 現在,如果用戶點擊的形式,而無需輸入數據 所以$ _GET [ '關鍵字'] & $ _GET [ '祿']都爲空 我希望它呼應BLAH

如果$ _GET [ '關鍵字']是空的,但是$ _GET [ '祿']心不是回聲「最新招聘in「。$ _ GET ['loc'];如果$ _get ['loc']爲空,但是$ _get ['keywords']不是 echo Latest。「$ _ GET ['keywords']。」作業「;

如果它們都包含數據我希望它回顯」最新「。$ _ GET ['keywords']。」工作在」 $ _ GET [‘祿’];

我的.htaccess文件包含此

RewriteRule jobs/(.*)$ jobs.php?keywords=&loc=$1 
RewriteRule (.*)/jobs$ jobs.php?keywords=$1&loc= 
RewriteRule (.*)/jobs-in/(.*)$ jobs.php?keywords=$1&loc=$2 

jobs.php要呼應 其爲標題格式的網頁,我想上面的數據等

請幫傢伙,我已經花了3小時這個到目前爲止,所有我所得到的是現在的代碼塊:(

**下面str_replace函數代碼**

function search() 
{ 
if(isset($_POST['keywords']) || ($_POST['loc'])) 
    { 
    $replace_array = array(',',' '); 
    if(empty($_POST['keywords'])) 
    { 
     $keywords = ''; 
     $loc = str_replace($replace_array,'-',$_POST['loc']); 
     header("Location: jobs/$loc"); 
    } elseif(empty($_POST['loc'])) 
    { 
     $keywords = str_replace($replace_array,'-',$_POST['keywords']); 
     $loc = ''; 
     header("Location: $keywords/jobs"); 
    } 
    else 
    { 
     $keywords = str_replace($replace_array,'-',$_POST['keywords']); 
     $loc = str_replace($replace_array,'-',$_POST['loc']); 
     header("Location: $keywords/jobs-in/$loc"); 
    } 
    } 
} 
+3

*呃.... *,你能告訴我們'str_replace()'在哪裏進場嗎? *「PHP str_replace沒有正確替換」* –

+0

已更新,道歉 按下提交後,它會運行sdearch()函數,然後根據需要重定向,然後在目標頁面上我希望它執行重寫 –

+0

您的htaccess顯示爲'jobs.php?關鍵字「暗示了一種GET方法,並且您在一段代碼中使用GET數組,然後切換到POST,*爲什麼?*。檢查錯誤http://php.net/manual/en/function.error-reporting.php也做一個var_dump。不知道帖子來自哪裏,最有可能的形式,但對我們來說最不明顯。 –

回答

0

如果兩者均爲空,則第一個if也解析爲真,因爲A && B == true意味着A == true(基本布爾邏輯)。

試試這個:

if(empty($_GET['keywords']) && empty($_GET['loc'])) { 
    echo "BLAH"; 
} elseif(empty($_GET['keywords'])) { 
    echo "Latest jobs in ".$_GET['loc']; 
} elseif(empty($_GET['loc'])) { 
    echo "Latest ".$_GET['keywords']." jobs"; 
} else { 
    echo "Latest ".$_GET['keywords']." jobs in ".$_GET['loc']; 
} 

最後,是什麼str_replace有這個問題(或您的重寫規則)呢?