0

我有一个这种格式的字符串,我只想要the-big-bang-theory这个字符串。问题是在这个字符串中有些单词的长度是可变的

media-tv-quotes-2-the-big-bang-theory-94-toprated-2
       ^                               ^    ^     ^
----------------------------------------------------

我尝试使用此代码,但没有运气。

$keywords = str_replace("/media-[a-z]-quotes-+/","", "media-tv-quotes-2-the-big-bang-theory-94-toprated-2");

任何人都知道我怎样才能做到这一点。

谢谢..

4

3 回答 3

2

尝试使用以下正则表达式:

$keywords = preg_replace("/^media-[a-z]+-quotes-\d+-(.*?)-\d+-.*$/", "$1", "media-tv-quotes-2-the-big-bang-theory-94-toprated-2");
于 2012-09-27T07:35:50.070 回答
2

获取两个数字之间的任何内容:

$s = 'media-tv-quotes-2-the-big-bang-theory-94-toprated-2';
preg_match('~\d+-(.+?)-\d+~', $s, $matches);
print_r($matches);

如果您的电影标题中有数字,问题就解决了,在这种情况下使用:

$s = 'media-tv-quotes-2-the-big-bang-theory-94-toprated-2';
preg_match('~^media-\w+-\w+-\d+-(.+?)-\d+-\w+-\d+$~i', $s, $matches);
print_r($matches);
于 2012-09-27T07:42:00.157 回答
0

试试这个 :

$keywords = preg_replace("/^(.*?)(the-big-bang-theory)(.*)$/i","$2", "media-tv-quotes-2-the-big-bang-theory-94-toprated-2");

the-big-bang-theory在它之前和之后捕获任何字符。然后只保留在替换中the-big-bang-theory

于 2012-09-27T07:35:35.750 回答