我对 preg_replace
完全陌生,但下面的代码删除了字符串中的最后一个单词:
preg_replace('/\W\w+\s*(\W*)$/', '$1', $var);
我正在尝试修改它,以便删除最后两个单词。
我唯一能想到的就是将 $1
替换为 $2
,但这似乎根本没有任何效果,而且可能只是愚蠢的:/
有问题的字符串看起来有点像这样:
Lorem ipsum dolor sit amet. Source: LOREM
我想删除来源:LOREM
最佳答案
一个简单的正则表达式可以匹配字符串末尾的空格,后跟任意数量的字母(或冒号),后跟空格,后跟任意数量的字母:
$str = "Lorem ipsum dolor sit amet. Source: LOREM";
$str = preg_replace( "/\s[a-z:]+\s[a-z]+$/i", "", $str );
// Lorem ipsum dolor sit amet.
echo $str;
表达式分解如下:
\s // Single space
[a-z:]+ // Any letter, a to z, or a colon, 1 or more times
\s // Single space
[a-z]+ // Any letter, a to z, 1 or more times
$ // End of string
演示:http://codepad.org/G22LnDDY
另一种方法是使用 explode
创建单词数组,并删除最后两个。
$str = "Lorem ipsum dolor sit amet. Source: LOREM";
$words = explode( " ", $str );
array_splice( $words, -2 );
// Lorem ipsum dolor sit amet.
echo implode( " ", $words );
关于php - 从字符串中删除最后两个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10541808/