在PHP中从字符串的开头删除“a”,“an”和“the”的最佳方法是什么?

时间:2014-03-08 05:48:30

标签: php string character

我正在创建一种通过标题的第一个字母过滤一组博客文章的方法。唯一的麻烦是我当然要在标题开头之前从标题的开头删除“A”,“An”和“The”。这就是我现在正在做的事情:

$title = strtolower( $_POST['post_title'] );
$title = substr($title, 0, 2) == 'a ' ? substr($title, 2) : $title;
$title = substr($title, 0, 3) == 'an ' ? substr($title, 3) : $title;
$title = substr($title, 0, 4) == 'the ' ? substr($title, 4) : $title;

这很好,但看起来很笨重。有没有更好的方法呢?

3 个答案:

答案 0 :(得分:0)

这应该有效 -

preg_replace('/^((the|an|a)\s)/i','',$title);

答案 1 :(得分:0)

 $vowels = array("a", "an", "the");
 $title= str_replace($vowels, "", $title);

了解更多信息: - http://in3.php.net/str_replace

答案 2 :(得分:0)

您可以使用str_replace非常强大地执行此类操作:

$title = "A is what this title starts with";
$splitTitle = explode(" ", $title);
$blacklist = array("an","a","the");
$splitTitle[0] = str_replace($blacklist,"",strtolower($splitTitle[0]));
$revisedTitle = implode(" ", $splitTitle);
echo $revisedTitle

这将仅替换在第一个空格之前找到的字符串。它将字符串与explode分开,如果第一个片段包含使用$blacklist的{​​{1}}成员,则删除该第一个片段,然后使用str_replace重新加入该字符串。

结果:

  

是这个标题的开头