Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果是字母“s”,则删除每个单词的最后一个字母_Php_Regex_Replace_Preg Replace - Fatal编程技术网

Php 如果是字母“s”,则删除每个单词的最后一个字母

Php 如果是字母“s”,则删除每个单词的最后一个字母,php,regex,replace,preg-replace,Php,Regex,Replace,Preg Replace,如标题所示,我有一个包含一些单词的句子,如果句子中每个单词的最后一个字母是字母s,我想删除它 我试试这个 preg_replace("%s(?!.*s.*)%", "", $mystring); 但它只删除最后一个单词尝试将s\\b作为正则表达式 例如: s是您的字母,\b表示单词边界。我想我甚至不会使用regexp这样做 $output = array(); foreach( explode( ' ', $myString ) as $word ) { $output[] = rt

如标题所示,我有一个包含一些单词的句子,如果句子中每个单词的最后一个字母是字母s,我想删除它

我试试这个

preg_replace("%s(?!.*s.*)%", "", $mystring);
但它只删除最后一个单词

尝试将s\\b作为正则表达式

例如:


s是您的字母,\b表示单词边界。

我想我甚至不会使用regexp这样做

$output = array();

foreach( explode( ' ', $myString ) as $word )
{
    $output[] = rtrim( $word, 's' );
}

$myString = implode( ' ', $output );

你能详细说明一下这个句子的每个单词是否都是字母s吗?这个词以s结尾,而不仅仅是复数形式。意思不是不止一个,而是一个像gas这样的词。如果你这样做是因为复数,如果你去除气体中的s,它将是ga,如果你去除气体中的s,它将是gase。我认为如果是这样的话,你应该创建一个安全的单词列表。在进行测试时,您将忽略这些单词。$myString=Wins。;应该赢…哦,为什么?正则表达式非常适合这种枯燥的工作,如果您提供注释,它可以使代码非常有表现力!:类似这样的解决方案正是正则表达式非常棒的原因——首先必须将其拆分为单词,然后修剪每个单词,然后再次将其内爆,如果您快速查看,则更难理解它的功能。同时,这与正则表达式s\b不同;如果这个词是蛇。正则表达式会把它变成蛇,这会把它变成蛇。@Áxel也许我只是没有仔细阅读这个问题…
$output = array();

foreach( explode( ' ', $myString ) as $word )
{
    $output[] = rtrim( $word, 's' );
}

$myString = implode( ' ', $output );