从字符串中删除前两个单词

问题描述 投票:0回答:5

我有一根绳子:

$string = "R 124 This is my message";

有时,字符串可能会发生变化,例如:

$string = "R 1345255 This is another message";

使用 PHP,删除前两个“单词”(例如,最初的“R”,然后是后续数字)的最佳方法是什么?

php cpu-word truncate
5个回答
16
投票
$string = explode (' ', $string, 3);
$string = $string[2];

一定比正则表达式快得多。


6
投票

一种方法是使用

explode
preg_split
将字符串分解为“单词”(取决于单词分隔符的复杂性:它们总是一个空格吗?)

例如:

$string = "R 124 This is my message";
$words = explode(' ', $string);
var_dump($words);

你会得到一个像这样的数组:

array
  0 => string 'R' (length=1)
  1 => string '124' (length=3)
  2 => string 'This' (length=4)
  3 => string 'is' (length=2)
  4 => string 'my' (length=2)
  5 => string 'message' (length=7)

然后,使用

array_slice
,您只保留您想要的单词(而不是前两个):

$to_keep = array_slice($words, 2);
var_dump($to_keep);

这给出了:

array
  0 => string 'This' (length=4)
  1 => string 'is' (length=2)
  2 => string 'my' (length=2)
  3 => string 'message' (length=7)

最后,你将各个部分组合在一起:

$final_string = implode(' ', $to_keep);
var_dump($final_string);

这给出了...

string 'This is my message' (length=18)

并且,如有必要,它允许您在将单词重新组合在一起之前对单词进行一些操作:-)
实际上,这就是您可能选择该解决方案的原因,该解决方案比仅使用

explode
和/或
preg_split
^^

有点长

5
投票

尝试

$result = preg_replace('/^R \\d+ /', '', $string, 1);

或者(如果您希望您的空间以更明显的风格书写)

$result = preg_replace('/^R\\x20\\d+\\x20/', '', $string, 1);

0
投票
$string = preg_replace("/^\\w+\\s\\d+\\s(.*)/", '$1', $string);

0
投票
$string = preg_replace('/^R\s+\d+\s*/', '', $string);
© www.soinside.com 2019 - 2024. All rights reserved.