php - 从字符串中删除最后两个单词

标签 php string preg-replace

我对 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 );

演示:http://codepad.org/6XwqvwuP

关于php - 从字符串中删除最后两个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10541808/

相关文章:

python - 使用 str(count) 追加到列表会出错

javascript - Nodeschool learnyounode 过滤器 LS 练习 : Cannot read property 'toString' of undefined

PHP 使用 preg_match 或正则表达式作为 array_search 的值或 array_keys_exist 的键

php - 如何从 PHP 中的 HTML 标签属性中删除标签?

PHP preg replace 只允许数字

php - 你如何实现一个好的亵渎过滤器?

php - Guzzle PUT 请求身份验证错误

php - 如何使用 jquery 获取 ID 值并将其发送到 PHP 脚本?

php - 仅适用于移动设备的 CSS,无需任何指示

Java:使用流连接具有 2 个不同分隔符的 2D string[][] 数组