代码之家  ›  专栏  ›  技术社区  ›  Mathieu Mourareau

php替换标签中的最后一个空格

php
  •  0
  • Mathieu Mourareau  · 技术社区  · 5 年前

    我有这根绳子:

    [{"type":"date","label":"Champ Date de ","className":"form-control","name":"date-1545926599900"}]
    

    我需要从标签上删除最后一个空格,实际值是“champ date de”,我需要将其转换为“champ date de”。

    这里是我的实际代码:

            $form = str_replace('\n','',$request->getParameter('data'));
            $form = str_replace('\t','',$form);
            $form = str_replace(' ','',$form);
            $form = str_replace('<br>','',$form);
            var_dump($form); die;
    

    问题来自
    : str_replace('<br>','',$form);

    具有 &nbsp; 我没有问题,函数str_replace不添加空格。但与 <br> str_replace添加一个空格add我真的需要在这个值的末尾有任何空格。希望有人能帮忙。

    我可以有多个数组:

    '[{"type":"date","label":"Champ Date de ","className":"form-control","name":"date-1545929424866"},{"type":"checkbox-group","label":"You like it ? ","name":"checkbox-group-1545929428281","values":[{"label":"Option 1","value":"1","selected":true}]}]'
    
    2 回复  |  直到 5 年前
        1
  •  3
  •   A l w a y s S u n n y    5 年前

    这个怎么样? 非正则表达式 用方式 array_map('trim',$array); ?

    <?php
    $json = '[{"type":"date","label":"Champ Date de ","className":"form-control","name":"date-1545926599900"}]';
    $array = json_decode($json,1)[0];
    $array= array_map('trim',$array);
    echo json_encode([$array]);
    ?>
    

    输出:

    [{"type":"date","label":"Champ Date de","className":"form-control","name":"date-1545926599900"}]
    

    演示: https://3v4l.org/qJ9K1

    编辑: 根据运营商的意见

    <?php
    $json = '[{"type":"date","label":"Champ Date de ","className":"form-control","name":"date-1545929424866"},{"type":"checkbox-group","label":"You like it ? ","name":"checkbox-group-1545929428281","values":[{"label":"Option 1","value":"1","selected":true}]}]';
    $array = json_decode($json,1);
    $expected = [];
    foreach($array as $k=>$v){
        foreach($v as $key=>$value){
            if($key == 'label' && !is_array($value)){
              $expected[$k][$key]= trim($value); 
           }else{
              $expected[$k][$key]= $value; 
           }
        }
    }
    
    echo json_encode($expected);
    ?>
    

    演示: https://3v4l.org/NRlsR

        2
  •  0
  •   Gagan Prajapati    5 年前

    您可以使用regex在不使用循环的情况下完成它 解决方案如下:

    $string = '[{"type":"date","label":"Champ Date de ","className":"form-control","name":"date-1545929424866"},{"type":"checkbox-group","label":"You like it ? ","name":"checkbox-group-1545929428281","values":[{"label":"Option 1","value":"1","selected":true}]}]';
    $pattern = '/("label":"([\w\s])+)/m';
    echo preg_replace_callback($pattern, function($match) {return trim($match[0]);}, $string);
    

    我已经为结果做了回音。你只需要把它赋给一个变量。