【问题标题】:Truncate a string after the last number在最后一个数字之后截断字符串
【发布时间】:2014-08-17 19:58:12
【问题描述】:

我想截断一个字符串以删除最后一位数字之后的任何内容。例如:

GB67 7HG - 我希望它截断为GB67 7。最好还是希望字符串中的空格。

我不确定从哪里开始!

【问题讨论】:

标签: php


【解决方案1】:

使用正则表达式的另一种解决方案

preg_match('/(.*?)(\d+)(?!.*\d)/', 'GB67 7HG', $matches);
print_r($matches);

输出:

Array
(
    [0] => GB67 7
    [1] => GB67 
    [2] => 7
)

PHP Demo | Regex Demo

【讨论】:

    【解决方案2】:

    如果您确定只有数字和字符,可以使用 rtrim 修剪不必要的字符,例如 $text = rtrim($text, 'A..Z ');

    有关此功能的更多信息,请访问:http://php.net//manual/bg/function.rtrim.php

    您也可以使用正则表达式,但是您需要一些正则表达式技能才能做到这一点。

    【讨论】:

      【解决方案3】:

      使用正则表达式可能有一个更简洁的解决方案,但也许以下内容会有所帮助。只需找到最后一位的索引并使用 substr()。

      $string = 'GB67 7HG';
      $count = strlen($string);
      $index = -1;
      $i = 0;
      while( $i < $count ) {
          if( ctype_digit($string[$i]) ) {
              $index = $i;
          }
          $i++;
      }
      if($index != -1) echo substr($string, 0, $index + 1);
      

      【讨论】:

      • 谢谢@Baps,这非常有效,但为了简单起见,我选择使用正则表达式!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-14
      • 1970-01-01
      • 2022-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多