如何在PHP中编写正则表达式以获取标题?

时间:2016-03-09 21:10:07

标签: php regex pattern-matching

我想写一个能够获取书籍/电影片名的正则表达式。

到目前为止,我用PHP编写了这个:

(?:                                # Start of group:
\b                                # Match start of a word
(?:                               # Start of inner group:
[A-Z]*
[A-Z][a-z]*                      # Either match an uppercase word
|                                 # or
(?:a[nts]|the|by|for|i[nt]|      # one of these "special" words
 o[fnr]|to|up|and|but|nor)
)                                 # End of inner group
\b                                # Match end of word
\s*                              # Match one or more whitespace characters
)+                                 # Match one or more of the above.

我的意见如下:

I watched the movie The Girl With the Dragon Tattoo but it wasn't very good.

匹配:

I
the
The Girl With the Dragon Tattoo but it

我知道这是一个复杂的问题,虽然我希望它只返回:

The Girl With the Dragon Tattoo

我会好的:

I
The Girl With the Dragon Tattoo

我怎样才能改变我的正则表达式来实现这个目标?

1 个答案:

答案 0 :(得分:0)

根据我的理解,您希望匹配任何用户输入并查找书名或电影名称。

如果你有一个非常好的书籍/电影数据库,你可以做的就是创建算法。

例如,总是将输入设为小写,如果您在数据库中,则检查每个标题。

如果您设法找到匹配项:您可以匹配标题前面和后面的几个单词。您可以将它们保存到数据库。之后,当您检查输入并且找不到标题时,您可以根据之前的输入创建preg_match,并确定最接近标题的位置。

如果您很幸运,可以将新标题保存到数据库中。

我不认为这会有点接近良好的效果。