【问题标题】:php - remove nth character from last in stringphp - 从字符串的最后一个字符中删除第 n 个字符
【发布时间】:2018-12-03 18:13:54
【问题描述】:

如果存在,如何从最后一个索引中的字符串中删除特定字符','。是否可以删除?

{ "messages": [
    {
        "a": "a",
        "a": "",
        "a": "Title : Test Image",
        "a": "+923346455485"
    },{
        "a": "a",
        "a": "",
        "a": "Title : Test Image",
        "a": "+923346455485"
    },
]}

我只想从字符串中删除最后一个逗号...即},]} 我只想删除逗号..

我试过这个:

echo substr(trim($resultstr), 0, -4);

但它会删除最后的所有 4 个字符。

【问题讨论】:

  • 为什么?是json。没有必要删除它。
  • 它最初是如何到达那里的......?
  • 这不是有效的 JSON。如果是这样,我很确定您需要在 substr() 起作用之前将其转换为字符串。
  • @Andreas 最后一个 , 使其无效 json
  • 没错,它确实使它无效。我认为 json_decode 可以处理它,但我想不是。

标签: php string


【解决方案1】:

您可以使用正则表达式。像/\},(\s+)\]/m 这样的东西应该可以工作。

$data = preg_replace('/\},(\s+)\]/m', '}$1]', $data);

但不是修复这部分,你应该修复代码,它会在 json 字符串中生成错误的,

【讨论】:

    【解决方案2】:

    你可以这样做:

    $str = '{"messages":[{"a":"a","a":"","a":"Title : Test Image","a":"+923346455485"},{"a":"a","a":"","a":"Title : Test Image","a":"+923346455485"},]}';
    
    if (!empty(strrpos($str, '"},]'))) {
        $str[strrpos($str, ',', strrpos($str, '"},]'))] = '';
    }
    
    echo $str;
    

    但我强烈建议不要这样做,并建议您替换后端中形成此字符串的代码,假设您正在尝试构建 JSON 字符串。

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      你也可以试试:

      $string = substr_replace($string, '', strrpos($string, ','), 1);
      

      【讨论】:

        猜你喜欢
        • 2012-09-23
        • 1970-01-01
        • 1970-01-01
        • 2011-05-11
        • 2011-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多