r0s*_*kar 2 php string preg-replace
我是全新的preg_replace,但下面的代码删除了我的字符串中的最后一个字:
preg_replace('/\W\w+\s*(\W*)$/', '$1', $var);
Run Code Online (Sandbox Code Playgroud)
我试图修改它,以便删除最后两个单词.
我能想到的唯一的办法就是更换$1使用$2,但这似乎不带任何效果,可能只是愚蠢:/
有问题的字符串看起来像这样:
Lorem ipsum dolor sit amet. Source: LOREM
Run Code Online (Sandbox Code Playgroud)
我想删除 Source: 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;
Run Code Online (Sandbox Code Playgroud)
分解的表达如下:
\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
Run Code Online (Sandbox Code Playgroud)
演示: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 );
Run Code Online (Sandbox Code Playgroud)
演示:http://codepad.org/6XwqvwuP