如何从PHP中的字符串中删除多个单词?

时间:2014-01-17 12:03:45

标签: php regex cakephp preg-replace pluralize

我有一串单词,有一些像

这样的单词
"Cloud", "Clouds", "Application", "Applications", "Event", "Events"

和一些像

这样的词
"Access"

这是单数但最后有"s"。我想删除复数单词,但我不能编写代码来从末尾删除s,因为它将从所有单词中删除"s"。 我在互联网上搜索,找不到任何相关内容。 任何人都可以帮助我做到这一点的最好方法吗?

编辑:如何在我的程序中使用CakePHP?我之前从未使用它,所以没有经验。我在函数中有String变量。它说我需要安装Cake PHP,谁能告诉我如何在函数中使用它?

由于

2 个答案:

答案 0 :(得分:6)

使用CakePHP附带的Inflector类。

debug(Inflector::singularize('People')); // will show person

http://book.cakephp.org/2.0/en/core-utility-libraries/inflector.html#Inflector::singularize

  

static Inflector :: singularize($ plural)

     

输入: 苹果,橘子,人,男

     

输出 Apple,Orange,Person,Man

老实说,我不知道它在内部是如何运作的,但它用英语单词做得很好,你甚至可以配置它来处理特殊情况。

您可以使用Inflector :: rules()定义规则的例外:

Inflector::rules('plural', array('/^(inflect)or$/i' => '\1ables'));
Inflector::rules('plural', array(
    'rules' => array('/^(inflect)ors$/i' => '\1ables'),
    'uninflected' => array('dontinflectme'),
    'irregular' => array('red' => 'redlings')
));
Inflector::rules('transliteration', array('/å/' => 'aa'));

答案 1 :(得分:3)

用英语做这件事并不容易:考虑Clouds => CloudFortresses => FortressLadies => LadySheep => Sheep ...只是简单地剥离s可能导致问题(例如Lady's)...您可能要考虑使用Porter Stemmer或类似的