为什么我的php trim()函数不起作用?

时间:2015-02-17 22:50:01

标签: php trim

我正在尝试使用trim从$ _POST数组中返回的数据中删除下划线字符。我尝试使用

 $post_Value= str_replace("_", " ", $key) 

但文本似乎没有作为单个字符串返回。它在每个条目之间被打破。然后我尝试这样修剪:

 <?php
$connection = mysqli_connect(DB_SERVER, DB_USER, DB_PASS, DB_NAME);

 // Test if connection succeeded

 if (mysqli_connect_errno())
    {
    die("Database connection failed: " . mysqli_connect_error() . " (" .  mysqli_connect_errno() . ")");
}

 if (isset($_POST))
    {
    $str = "";
   foreach($_POST as $key => $value)
    {
    $str = $str . $key . ",";
    }

   $post_Value = trim("_", $str);
   }

   $query = "UPDATE player_match SET categoryOption='$$post_Value' WHERE id=1";
 ?>

当我使用trim函数时,没有任何事情它不会删除_字符。我最终的目标是将逗号分隔的列表作为单个字符串放在我的数据库中。为什么我的trim()函数在这种情况下不起作用?

更新:在视图页面资源中找到<br/>,因此我必须执行以下操作的组合:

       $post_Value= str_replace("<br_/>", "", $str);
        $post_Value2= str_replace("_", " ", $post_Value);
        $post_Value3= rtrim($post_Value2,",submit,");
        echo $post_Value3;


        $query="UPDATE player_match SET categoryOption='$post_Value3' WHERE   id=1";

2 个答案:

答案 0 :(得分:4)

首先,trim()采用相反顺序的参数$str,然后是$character_mask。所以你应该使用:$post_Value = trim($str, "_");

其次,trim()仅在字符串的开头和结尾中对屏蔽的字符进行字符串。如果字符串被非掩码字符包围,它不会从字符串中删除任何掩码字符。


您实际上应该使用 str_replace()使用空替换字符串(您已经尝试使用单个空格作为替换):

$post_Value= str_replace("_", "", $key)

如果您还想删除<br>代码(在其典型版本中),您可以通过单str_replace()次呼叫进行删除,如下所示:

$post_Value= str_replace(array("_", "<br>", "<br/>", "<br />"), "", $key)

有关详细信息,请参阅str_replace()文档。

答案 1 :(得分:0)

我在查看页面资源时发现了一些内容。我的代码中没有它们,所以这很令人困惑。我最后不得不像这样做str_replace()和rtrim()的组合:

 $post_Value= str_replace("<br_/>", "", $str); $post_Value2= str_replace("", " ", $post_Value); $post_Value3= rtrim($post_Value2,",submit,"); echo $post_Value3; //echo $editedStr=str_replace("", " ", $str); $query="UPDATE player_match SET categoryOption='$post_Value3' WHERE id=1";