删除启动单词和结束单词正则表达式

时间:2012-09-27 07:32:49

标签: php regex

我有一个这种格式的字符串,我只希望来自此字符串的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");

任何人都知道如何实现这一目标。

谢谢..

3 个答案:

答案 0 :(得分:2)

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

$keywords = preg_replace("/^media-[a-z]+-quotes-\d+-(.*?)-\d+-.*$/", "$1", "media-tv-quotes-2-the-big-bang-theory-94-toprated-2");

答案 1 :(得分: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);

答案 2 :(得分: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