【问题标题】:PHP function trim() not stripping whitespace from the middle of the stringPHP函数trim()没有从字符串中间去除空格
【发布时间】:2014-01-19 15:52:50
【问题描述】:

我有一些非常直接的代码,但是出了点问题。以下代码

$title = $_POST['templatename'];
$user = $_POST['username'];
$selectedcoordinates = $_POST['templatestring'];

$title = trim($title);
$user = trim($user);


$filename = $title . "_by_" . $user;

var_dump($title);
var_dump($user);
var_dump($filename);

返回:

string(11) "Single Tile"
string(6) "Author"
string(21) "Single Tile_by_Author" 

值来自 HTML 表单。为什么"Single Tile" 不变成"SingleTile"

【问题讨论】:

  • trim 应该从字符串的开头和结尾修剪
  • 修剪仅适用于边缘“”。 “一些文字” ==> “一些文字”
  • 使用 trim(),您可以删除语句开头和结尾的空格。不是语句中每个 WORD 的开头和结尾。

标签: php string trim


【解决方案1】:

函数trim() 只删除字符串开头和结尾的空格(和控制字符,如\n)。

$title = str_replace(" ", "", trim($title));
$user = str_replace(" ", "", trim($user));

我只是想解决这个问题。因此,解决方案可能看起来很糟糕。无论如何,最好的用途是使用这种方式:

$title = str_replace(" ", "", $title);
$user = str_replace(" ", "", $user);

我删除了trim() 函数,因为str_replace() 完成了trim() 的工作。

【讨论】:

  • trim 也会删除\n\r\t
  • 为什么要在删除所有空格之前进行修剪?这不合逻辑
  • 这解决了我的问题!一旦 StackOverflow 允许我接受答案,我就会接受。谢谢。
【解决方案2】:

我们不仅要替换空格,还要替换所有 ASCII Controll Chars

例如。 SpaceTabEnd of Line

$str = preg_replace("/[\\x0-\x20\x7f]/", '', $str);

【讨论】:

    【解决方案3】:
     array('username','filter','filter'=>'trim')
    array('templatename','filter','filter'=>'trim')
    

    在规则中添加以上行

    【讨论】:

      【解决方案4】:

      Trim 只删除开头和结尾的空格,而不是所有空格。

      str_replace(' ','',$string);
      

      删除所有空格

      【讨论】:

        【解决方案5】:

        http://www.php.net/manual/en/function.trim.php trim — 从字符串的开头和结尾去除空格(或其他字符)

        这意味着 trim 只会删除字符串末尾和开头的空格,而不是字符串内部的空格。你可以试试这个:

        $title = str_replace(' ','',$title);
        

        【讨论】:

          【解决方案6】:

          修剪用于边缘。

          只需使用:

          $title = str_replace(' ', '', $title);
          $user = str_replace(' ', '', $user);;
          

          【讨论】:

          • 因为 OP 只想解释他的方法,而不是任何替代方法。
          【解决方案7】:

          您可以使用str_replace() 函数,该函数返回一个字符串或一个数组,将主题中所有出现的搜索替换为给定的替换值。

            $title = str_replace(' ', '', $title);
          

          语法:str_replace(混合 $search,混合 $replace,混合 $subject [, int &$count])

          搜索

          正在搜索的值,也称为针。一个数组可以用来指定多个针。

          替换 替换找到的搜索值的替换值。一个数组可以用来指定多个替换。

          主题

          被搜索和替换的字符串或数组,也称为干草堆。

          如果subject为数组,则对subject的每一项进行查找替换,返回值也是数组。

          更多关于:http://in3.php.net/str_replace

          【讨论】:

          • 任务只是删除空格。那么为什么要使用 trim AND str_replace?
          • 对我来说很高兴:D
          【解决方案8】:

          答案很简单。首先你需要对函数 trim() 的作用有一个基本的了解。

          函数的语法是:

          修剪(字符串,字符列表);

          第二个参数是可选的。如果存在,它将从字符串的 两端 中删除 charlist 中存在的字符。

          例子:

          $str="beautiful day";
          echo trim($str, "aby");
          

          输出:

          eautiful d
          

          字母 aby 从字符串的两端删除

          但是,如果省略第二个参数,则字符串的两端都会删除以下字符。

          "\0" - NULL
          "\t" - tab
          "\n" - new line
          "\x0B" - vertical tab
          "\r" - carriage return
          " " - ordinary white space
          

          在你的情况下,输出是:

          string(11) "Single Tile" string(6) "Author" string(21) "Single Tile_by_Author" 
          

          SingleTile_by_Author 之间的空格仍然存在,因为空格仅从两端删除

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-05-16
            • 1970-01-01
            • 2017-09-20
            • 1970-01-01
            • 2012-09-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多