【问题标题】:php - cut string until specific characterphp - 剪切字符串直到特定字符
【发布时间】:2017-09-19 16:57:47
【问题描述】:

我查看了一些早期的 stackoverflow 问题,但在任何地方都找不到我想要的:

我想将使用$_GET 获得的字符串拆分为特定字符。

这是一个示例网址:mywebsite/savettimes.php?time=1%3A15%2E123

'time=' 之后的内容基本上只是一个时间,比如 1:13.123。我只想得到分钟,在这种情况下为 1。我可以使用substr(),但问题是我不知道分钟数是多少。可能是 1 或 2。

我尝试使用多个 if 语句,但我想要一个更好的方法。

$time = $_GET['time'];
if (strlen($time) == 6) {//If only 1 digit of minutes is there
  $min = substr($time, 0, 1);
} else if (strlen($time) == 7) {
  $min = substr($time, 0, 1);
}

所以,我想将字符串拆分到 ':'。我该怎么做?

【问题讨论】:

  • urldecode 之后由%3A: 分解
  • 谁能告诉我我的问题出了什么问题?
  • 自从我回答后,我没有投反对票,但可能缺乏研究工作以及可以找到许多类似或确切的问题。
  • 好的,现在我已经添加了一些我之前做过的尝试(在发布这个问题之前)。

标签: php string substring


【解决方案1】:

使用strstr 很容易,它可以返回第一次出现: 之前的所有内容:

$min = strstr($_GET['time'], ':', true);

或者也获得 seconds.micro-seconds:

list($min, $sec) = explode(':', $_GET['time']);

【讨论】:

  • 注意用点将微秒与秒分开。你可以改用list($min, $sec, $mic) = sscanf($_GET['time'], '%d:%d.%s');。但是要小心$mic 中的前导零。
【解决方案2】:
$url = "23:13.123.";
$minute =  substr($url, 0, strpos($url, ':'));

【讨论】:

    【解决方案3】:

    可以使用phpexplode函数:

    $time = $_GET['time'];
    $timeParts = explode(":", $time);
    $minute = $timeParts[0];
    

    注意:不推荐使用不带过滤器的$_GET[''],但它与此问题无关。

    【讨论】:

      猜你喜欢
      • 2013-01-14
      • 2021-01-08
      • 2017-06-01
      • 2013-07-24
      • 2013-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多