Php 仅当字符串的最后一个字符是“a”时才删除它;s";

Php 仅当字符串的最后一个字符是“a”时才删除它;s";,php,Php,我试图编写一个代码,仅当某个字符串的最后一个字母是“s”时,才从该字符串中删除最后一个字符 $string值 子字符串将删除最后一个字母;但是,它也将删除不需要的带的p substr($string,0,-1) pregreace删除每个单词的最后一个s。这会将无密封工具变成不需要的密封工具。也许我可以使用不同的表达方式 preg_replace("/s\b/", "", $string) 我搜索了谷歌,但只有在字母s的情况下才找到删除完整字符串最后一个单词的确切答案。所有结果都是针对单个单

我试图编写一个代码,仅当某个字符串的最后一个字母是“s”时,才从该字符串中删除最后一个字符

$string值 子字符串将删除最后一个字母;但是,它也将删除不需要的带的p

substr($string,0,-1)
pregreace删除每个单词的最后一个s。这会将无密封工具变成不需要的密封工具。也许我可以使用不同的表达方式

preg_replace("/s\b/", "", $string)
我搜索了谷歌,但只有在字母s的情况下才找到删除完整字符串最后一个单词的确切答案。所有结果都是针对单个单词。

在删除前,您可以使用
substr()
检查最后一个字母:

if (substr($string,-1) == 's') // get/check the last letter
    $string = substr($string, 0, -1); // remove last letter

为什么在这里使用regexp?regexp用于更复杂的问题。在这里,您可以简单地使用:

if($string[strlen($string)-1] === 's'){
    $string = substr($string, 0, -1);
}
使用:

这里唯一的风险是,如果您有一个末尾有多个字母s的字符串,如“Toolss”,它会变成“Tool”而不是“Tools”

某些选项

1) $string = preg_replace('/s$/', '', $string); // slight modification to yours which limits to trailing 's'

2) $string = rtrim($string, 's'); // note: will remove 1+

3) $string = substr($string, -1) === 's' ? substr($string, 0, -1) : $string;

4) $string = $string[-1] === 's' ? substr($string, 0, -1) : $string; // php 7.1+ only

尝试
rtrim('str,'s')
rtrim('string,'s');
尽管它将删除所有尾随的
s
字符;或
preg_replace('/s$/','','$string)
@Fabian
rtrim()如果有多个
s
和结尾,那么它将失败,但我想它在大多数情况下都会起作用:)这也会从实际以
s
结尾的单词中删除尾随的
s
,当然,就像食道一样,因此如果你只是试图从复数中获得单数,这不是正确的方法-尤其是当你需要支持其他语言的时候……作为一个黑客,你将要扔进搜索查询中的字符串(除了像方框这样的词)就足够了@CD001-是的,我意识到了。这是我正在研究的背景代码,这是我意识到的。到目前为止,所有的单词都没有冲突;然而,如果我遇到冲突,我就不得不想出另一个解决方案。但它确实让我摆脱了我试图做的事情的束缚。我同意。我喜欢一行代码而不是多个步骤
$string = rtrim($string, 's');
1) $string = preg_replace('/s$/', '', $string); // slight modification to yours which limits to trailing 's'

2) $string = rtrim($string, 's'); // note: will remove 1+

3) $string = substr($string, -1) === 's' ? substr($string, 0, -1) : $string;

4) $string = $string[-1] === 's' ? substr($string, 0, -1) : $string; // php 7.1+ only