我正在使用preg_match将joomla模块插入到包含单词“category”的任何url中的模板中。
一个示例网址是:xyz.com/page/category/
我的代码是:
if(preg_match('/category/',$_SERVER['REQUEST_URI']))
echo '<jdoc:include type="modules" name="form" style="xhtml" />';
我已经意识到我需要将模块插入仅出现在“类别”之后的URL中的页面。
例如:xyz.com/page/category/123-page-after-category
我尝试了以下但它不起作用:
if(preg_match('/category/?.*',$_SERVER['REQUEST_URI']))
如果只需要在/category/
之后有字符时才评估为true,那么你需要使量词“一个或多个”(+
)而不是“零或更多”(*
)。实际上,你只需要检查/category/
之后是否有一个字符,所以“任意字符”都是非可选的。
这是一种方式:
if (preg_match('~/category/.~', $_SERVER['REQUEST_URI'])) {
请记住,正则表达式模式需要在php中使用“模式分隔符”。这次我用过波浪线。您的第一个模式被正则表达式引擎解释为category
,并将斜杠视为分隔符 - 这意味着您可以匹配“scategory-boardgame”。
如果您需要不区分大小写的匹配,请在第二个波形符号后写入i
。 (图案修饰符)
如果你需要确保/category/
后面的字符不是查询字符串或网址的锚点部分,你可以过滤掉?
和#
。
~/category/[^?#]~