一个简单的正则表达式可以匹配字符串末尾的空格,后跟任意数量的字母(或冒号),后跟空格,后跟任意数量的字母:
$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
Demo: http://codepad.org/G22LnDDY 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 );
Demo: http://codepad.org/6XwqvwuP http://codepad.org/6XwqvwuP