PHP str_replace无法正确替换

时间:2016-02-25 13:28:11

标签: php string if-statement replace rewrite

好的,这是我的代码:

<?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个表单字段,关键字&amp; LOC 现在,如果用户在不输入数据的情况下点击表单 所以$ _get ['keywords']&amp; $ _get ['loc']都是空的 我希望它能回应BLAH

如果$ _get ['keywords']为空但$ _get ['loc']不回显“最新作业”。$ _ GET ['loc'];

如果$ _get ['loc']为空但$ _get ['keywords']不是 echo最新“。$ _ GET ['keywords']。”作业“;

如果它们都包含数据,我希望它回显“最新”。$ _ GET ['keywords']。“作业”。$ _ GET ['loc'];

我的.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");
    }
    }   
}

1 个答案:

答案 0 :(得分:0)

如果两者都为空,则第一个if也会解析为true,因为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与此问题(或您的重写规则)有什么关系?