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