【问题标题】:How to get part of a string when the string can be different each time当字符串每次都不同时如何获取字符串的一部分
【发布时间】:2015-05-28 14:47:01
【问题描述】:

所以我有一个从我的数据库中检索到的字符串。返回的值可以像

VD-6||CL-4

或者只是

VD-6

我需要连字符后的值。例如,如果它返回了

VD-12||CL-5  

我需要从那个字符串中提取“12”。

感谢任何帮助。

【问题讨论】:

  • 我不知道该尝试什么。我假设我可以使用正则表达式,但我不太了解它并且无法找出模式。如果它始终是相同的格式,我可以使用 substr 但我认为在这种情况下不会起作用。
  • echo preg_match("/[0-9]+/", $string, $matches[0]);

标签: php string substring


【解决方案1】:

您可以使用正则表达式来做到这一点,或者只是老式的拆分方法。

让我给你一个关于第二个的例子:

$string = 'VD-12||CL-5';

$split = explode('-', $string);
$yourNumber = intval($split[1]); // $yourNumber = 12

但是....我更喜欢用正则表达式来解决这个问题。但是在不完全了解正则表达式和输入的要求的情况下,很难给出正则表达式的具体示例。 顺便说一句,我上面的代码示例也是如此。但我只是按照你提供的信息去做。

【讨论】:

  • 它的格式总是 VD-## 或 VD-## || CL-##
  • 正则表达式并不难:echo preg_match("/[0-9]+/", $string, $matches[0]);
  • 在那种情况下,我会以@Daan 为例
【解决方案2】:
// get 12 out of VD-12||CL-5
// or get 6 out of VD-6

$string = "VD-12||CL-5";

//$string = "VD-6";

$strpos = strpos($string, '|');

if($strpos){
echo substr($string, strpos($string, '-') +1, $strpos-3);
}else{
echo substr($string, strpos($string, '-') +1);

}

但是一点信息可能会有用

demo

【讨论】:

    猜你喜欢
    • 2019-11-14
    • 2011-09-27
    • 2020-07-11
    • 2018-04-06
    • 2012-07-23
    • 1970-01-01
    • 2015-02-02
    • 1970-01-01
    • 2016-06-13
    相关资源
    最近更新 更多