【问题标题】:How to extract a substring from a string in PHP until it reaches a certain character?如何从PHP中的字符串中提取子字符串直到它到达某个字符?
【发布时间】:2011-01-12 21:08:25
【问题描述】:

我有一个 PHP 应用程序的一部分,它评估用户输入的长字符串,并在用户提供的字符串中提取一个总是以 20 个字符开头的数字。

唯一的问题是我不知道每个用户的号码会有多长,我只知道号码的末尾总是跟一个双引号 (")。

如何使用 PHP 子字符串函数提取从特定点开始到双引号结束的子字符串?

提前致谢。

【问题讨论】:

    标签: php substring


    【解决方案1】:

    您可以使用strpos 获取" 从第20 位开始的第一个位置:

    $pos = strpos($str, '"', 20);
    

    然后可以使用该位置来获取子字符串:

    if ($pos !== false) {
        // " found after position 20
        $substr = substr($str, 20, $pos-20-1);
    }
    

    第三个参数的计算是必要的,因为substr 期望子字符串的长度而不是结束位置。另请注意,如果在 haystack 中找不到 needlesubstr 将返回 false

    【讨论】:

      【解决方案2】:
      $nLast = strpos($userString , '"');
      substr($userString, 0, $nLast);
      

      【讨论】:

        【解决方案3】:
        <?
        
        $str = substring($input, 20, strpos($input, '"') - 20);
        echo $str;
        
        ?>
        

        或者类似的东西。

        【讨论】:

          【解决方案4】:

          在 20 个字符后找到第一次出现的双引号,减去 19 - 这给了你想要的子字符串的长度:

          $dq = strpos($string,'"',19); //19 is index of 20th char
          $desired_string = substr($string,19,$dq-19);
          

          【讨论】:

            【解决方案5】:

            如果您需要子字符串函数的帮助,只需添加 Gumbo 的答案:

            $pos = strpos($str, '"', 20);
            $substring = substr($str, 20, $pos);
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2019-07-08
              • 2011-02-05
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-11-17
              • 1970-01-01
              相关资源
              最近更新 更多