Php 使用正则表达式规范电影标题

Php 使用正则表达式规范电影标题,php,regex,Php,Regex,我正在编写一个php脚本,它从一个 webservice,并将其存储到数据库中 没什么特别的, 我现在唯一需要解决的是一个排序标题,即titile 从通常的‘the’/‘An’/‘A’中删去的电影(如有必要) e、 g 黑暗骑士 教育 分离 应该成为 黑暗骑士 教育 分离 就这么简单,但考虑到我在正则表达式领域的无知,我正在呼救。 希望我说清楚。如果您发现自己有疑问,请寻求澄清。您可以尝试 $titles = array("The Dark Knight","An Education",

我正在编写一个php脚本,它从一个 webservice,并将其存储到数据库中

没什么特别的, 我现在唯一需要解决的是一个排序标题,即titile 从通常的‘the’/‘An’/‘A’中删去的电影(如有必要)

e、 g

  • 黑暗骑士
  • 教育
  • 分离
应该成为

  • 黑暗骑士
  • 教育
  • 分离
就这么简单,但考虑到我在正则表达式领域的无知,我正在呼救。 希望我说清楚。如果您发现自己有疑问,请寻求澄清。

您可以尝试

$titles = array("The Dark Knight","An Education","A Separation");
$words = array('a','the','an');
$regex = '/\b^(' . implode('|', $words) . ')\b/i' ;

echo "<pre>";
foreach ( $titles as $title ) {
    echo preg_replace($regex, '', $title), PHP_EOL;
}
试试这个:

使用
\2
返回没有明确冠词的电影片名,例如
黑暗骑士


或者使用
\2、\1
返回
黑暗骑士

只是一个建议,我不会完全删除标题,而是将
黑暗骑士
变成
黑暗骑士
。您可能应该保留原始标题,因为标题是特定于电影的。此处不需要正则表达式。您可以使用
trim(str_replace('The','The','The Dark Knight')
你会怎么处理
好的、坏的和丑陋的
?@Baba,我只需要去掉第一个出现的,所以第一个“The”。@Jeremy1026我不需要保留它,因为这些信息只是用于排序目的,不会显示给用户。它就像一个符咒,而+1代表优雅。您的代码(在preg_replace中)中只有一个括号输入错误,加上preg_replace调用的结果应该被修剪,其余部分完全是awsum!:D
 Dark Knight
 Education
 Separation
^(The|An|A) (.+)$