我有一个这种格式的字符串,我只希望来自此字符串的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");
任何人都知道如何实现这一目标。
谢谢..
答案 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
。