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