我有一个字符串:
$string = "R 124 This is my message";
Run Code Online (Sandbox Code Playgroud)
有时,字符串可能会发生变化,例如:
$string = "R 1345255 This is another message";
Run Code Online (Sandbox Code Playgroud)
使用PHP,删除前两个"单词"(例如,初始"R"然后是后续数字)的最佳方法是什么?
谢谢您的帮助!
Ily*_*man 16
$string = explode (' ', $string, 3);
$string = $string[2];
Run Code Online (Sandbox Code Playgroud)
必须比正则表达式快得多.
尝试
$result = preg_replace('/^R \\d+ /', '', $string, 1);
Run Code Online (Sandbox Code Playgroud)
或(如果您希望以更明显的方式书写空格)
$result = preg_replace('/^R\\x20\\d+\\x20/', '', $string, 1);
Run Code Online (Sandbox Code Playgroud)
一种方法是在"单词"中爆炸字符串,使用explode或(取决于单词分隔符的复杂性:它们总是一个空格吗?)preg_split
例如 :
$string = "R 124 This is my message";
$words = explode(' ', $string);
var_dump($words);
Run Code Online (Sandbox Code Playgroud)
你会得到一个像这样的数组:
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)
Run Code Online (Sandbox Code Playgroud)
那么,array_slice你只保留你想要的单词(不是前两个单词):
$to_keep = array_slice($words, 2);
var_dump($to_keep);
Run Code Online (Sandbox Code Playgroud)
这使 :
array
0 => string 'This' (length=4)
1 => string 'is' (length=2)
2 => string 'my' (length=2)
3 => string 'message' (length=7)
Run Code Online (Sandbox Code Playgroud)
最后,你把各个部分组合在一起:
$final_string = implode(' ', $to_keep);
var_dump($final_string);
Run Code Online (Sandbox Code Playgroud)
这使...
string 'This is my message' (length=18)
Run Code Online (Sandbox Code Playgroud)
并且,如果有必要,它允许您在将它们重新组合在一起之前对单词进行几次操作:-)
实际上,这就是您可能选择该解决方案的原因,这种解决方案仅使用explode和/或preg_split^^