我有这条线,现在不仅要用空格替换点和下划线。 现在我也会将“德语”(不带引号)替换为空行。
有人可以帮忙吗?
preg_replace('/\(.*?\)|\.|_/i', ' ',
最好的注册
修改
public function parseMovieName($releasename)
{
$cat = new Category;
if (!$cat->isMovieForeign($releasename))
{
preg_match('/^(?P<name>.*)[\.\-_\( ](?P<year>19\d{2}|20\d{2})/i', $releasename, $matches);
if (!isset($matches['year']))
preg_match('/^(?P<name>.*)[\.\-_ ](?:dvdrip|bdrip|brrip|bluray|hdtv|divx|xvid|proper|repack|real\.proper|sub\.?fix|sub\.?pack|ac3d|unrated|1080i|1080p|720p|810p)/i', $releasename, $matches);
if (isset($matches['name']))
{
$name = preg_replace('/\(.*?\)|\.|_/i', ' ', $matches['name']);
$year = (isset($matches['year'])) ? ' ('.$matches['year'].')' : '';
return trim($name).$year;
}
}
return false;
}
字符串例如是“movieName German 2015”,但输出应为“movieName 2015”(不带引号)
解决:
现在将行preg_replace('/\(.*?\)|\.|_/i', ' ', $matches['name']);
更改为$name = preg_replace('/\h*\bGerman\b|\([^()]*\)|[._]/', ' ', $matches['name']);
谢谢@WiktorStribiżew
答案 0 :(得分:1)
要添加替代组,您只需使用
$name = preg_replace('/\h*\bGerman\b|\([^()]*\)|[._]/', ' ', $matches['name']);
^^^^^^ ^^^^^^^
请注意,\h
仅匹配水平空格(无换行符),如果您需要换行符,请使用\s
。
\h*\bGerman\b
匹配零个或多个空格后跟一个完整的单词&#34;德语&#34; (因为\b
是一个单词边界,没有&#34;日耳曼语&#34;单词将匹配)。
此外,(\.|_)
在此模式匹配的结果中等于[._]
,但匹配单个符号时,字符类[...]
的效率会更高。