我尝试从字符串中提取编码字符串,例如
$string = 'Louise Bourgeois and Tracey Emin: Do Not Abandon Me [date]Until 31 August 2011[ /date ]';
$description = preg_replace('/\[(?: |\s)*([date]+)(?: |\s)*\](.*?)\[(?: |\s)*([\/date]+)(?: |\s)*\]/is', '',$string);
$date = preg_replace('/\[(?: |\s)*([date]+)(?: |\s)*\](.*?)\[(?: |\s)*([\/date]+)(?: |\s)*\]/is', '$3',$string);
echo $date;
结果:
Louise Bourgeois and Tracey Emin: Do Not Abandon Me /date
预期结果:
Until 31 August 2011
我得到$description
权利,但我无法让[date]
权利。有任何想法吗?
答案 0 :(得分:1)
我认为一种相当简单的形式可以做到:
#.*?\[\s*?date\s*?\](.*)\[\s*?/date\s*?\].*#
例如?
答案 1 :(得分:0)
([date]+)
这将寻找包含d
,a
,t
和/或e
的一个或多个字母序列。 []
是字符类的正则表达式元字符,不会被视为文字字符以进行匹配。你可能想要:
(\[date\]) and (\[\/date\])
正确匹配那些打开/关闭“标签”。