【问题标题】:Break a sentence in two parts on first occurrence of a a number在第一次出现数字时将句子分成两部分
【发布时间】:2013-10-03 21:16:52
【问题描述】:

我处于需要将“Havenlaan 86C Bus 12”线分成两部分的情况

$str = 'Havenlaan 86C Bus 12'; 
$regex = '/[ ^\d]/';
$flags = PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY;
$exploded = preg_split( $regex,$str, 2, $flags);
print_r($exploded);

上面的代码成功完成了工作,输出如下。

  1. 哈文兰

  2. 86C 总线 12

但是当我将字符串更改为 $str = 'Havenlaan ABC 86C Bus 12';

我明白了

1. Havenlaan
2. ABC 86C Bus 12

我需要的是

1. Havenlaan ABC

2. 86C Bus 12

即。第一个输出应该是纯字符串,第二个应该以数字开头,后面可以跟字符。

【问题讨论】:

  • 删除括号内的空格 /[^\d]/
  • 你到底想达到什么目的?

标签: php regex preg-split


【解决方案1】:

你可以使用前瞻

$regex = '/(?=\d)/';

这将在第一次出现数字时拆分(limit 指定为 2)。

【讨论】:

  • 是的,这就是我想要的。完美。
  • 同时我创建了这个解决方法 $Streetblock='Havenlaan ABC 86C Bus 12; $regex = '/[\d]/'; $flags = PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY; $exploded = preg_split($regex,$Streetblock, 2, $flags); $strpos=strpos($str,$exploded[1])-1; $Street=trim($exploded[0]); $House_Bus=trim($str[$strpos].$exploded[1]);
【解决方案2】:

如果只是拆分两次,请使用/(?=\d)/

【讨论】:

    【解决方案3】:

    / \d/ 用作分隔符。

    [ ^\d] 仅匹配空格或^\d 非数字的单个字符。

    【讨论】:

      猜你喜欢
      • 2015-10-09
      • 2021-06-08
      • 2014-09-02
      • 1970-01-01
      • 2021-12-08
      • 2011-10-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多