代码之家  ›  专栏  ›  技术社区  ›  rob.m

如何删除字符串开头的第一个空格?

php
  •  5
  • rob.m  · 技术社区  · 6 年前

    我有一根绳子,像:

    " United States" 我希望它是 "United States"

    由于其他原因,我使用以下内容来替换字符串,但我无法理解如何告诉它只删除第一个空格:

    $title = usp_get_meta(false, 'usp-custom-8');
    update_post_meta( $post->ID, 'usp-custom-8', str_replace('n Argentinan', 'Argentina', $title ));
    

    我知道我可以用 $str = ltrim($str); 但是我不知道如何把它放在那里,我不想冒险运行这个循环并创建一个灾难,因为它将通过我的整个数据库。

    理论上,我也可以用我拥有的另一个代码来运行它:

            $stateList = usp_get_meta(false, 'usp-custom-8');
            $stateList = ltrim($stateList);
            $stateList = explode(',', $stateList);
            foreach($stateList as $state) {
              array_push($countries, $state);
            }
    

    但我明白了 Array 作为一个值。使用时 ltrim 那里。

    所以我要么让它作为第一个例子运行一个循环,要么让它运行最后一段代码,但是我如何从字符串中删除第一个空格呢?

    6 回复  |  直到 6 年前
        1
  •  4
  •   Anmol Nithin Baby    6 年前

    建议的LTRIM方法不会删除第一个空格。相反,它会删除字符串开头的所有空格,即 ltrim("foo bar") 会回来的 foo bar 不是 foobar (它不会删除字符串中的第一个空格)

    相反,使用preg_替换为$limit, $str=preg_replace("/\s/u","",$str,1); -它将删除$str中的第一个空间,而不管第一个空间在哪里。

    update_post_meta( $post->ID, 'usp-custom-8', preg_replace("/\s/u","",$title,1));

    https://www.reddit.com/r/MaliciousCompliance/

        2
  •  5
  •   Pedro Lobito    6 年前

    我不完全确定你想做什么,但理论上你可以用 array_map() ltrim() 功能,甚至 trim() ,作为参数 之后 爆炸 $stateList ,即(未测试):

    $stateList = array_map("ltrim",  explode(',', $stateList));
    # loop...
    

    1. explode() -用字符串拆分字符串 数组
    2. array_map() -将回调应用于给定的 数组
    3. ltrim() -从字符串开头删除空白(或其他字符)
    4. trim() -从字符串的开头和结尾删除空白(或其他字符)
        3
  •  4
  •   Andrei Todorut    6 年前

    使用 array_map 功能 http://php.net/manual/en/function.array-map.php

    function removeLeftEmptySpace($str) {
        return ltrim($str);
    }
    
    $arr = [' United states', 'Boston'];
    print_r(array_map('removeLeftSpace',$arr));
    
        4
  •  3
  •   Dirk J. Faber    6 年前

    您可以循环、修剪并将这些内容放入一个新的数组中,如下所示:

    $countries  = [' United States', 'Argentina', ' France'];
    $countriesClean = array();
    
        foreach($countries as $country) {
          $cleanCountry = ltrim($country);
          array_push($countriesClean, $cleanCountry);
        }
    

    在这种情况下,阿根廷是唯一不需要清理的国家名称。 Demo

        5
  •  2
  •   MrSmile cashews    6 年前

    或者你可以只用 preg_replace :

    $stateList = "     United States  ,   Argentina   ,  France      ";
    
    $stateList = preg_replace("#\s*,\s*#", ',', trim($stateList) );
    
    print_r(explode(",", $stateList));
    

    输出为:

    Array
    (
        [0] => United States
        [1] => Argentina
        [2] => France
    )
    
        6
  •  1
  •   Shahnawaz Kadari    6 年前

    如果 美元头衔 是字符串,您只想删除字符串开头的空白,可以尝试…

    代码

    $title = " United States";
    if(strpos($title," ") === 0 ){
      $title = substr($title, -(strlen($title)-1));
    }
    var_dump($title);
    

    我在用 = = 有时要严格检查 斯特罗斯 返回false。

    产量

    string(13) "United States"
    

    Demo