PHP preg_match url 中已在 url 中的特定单词之后的任何文本
PHP preg_match any text in a url after a specific word already in the url
我正在使用 preg_match 将 joomla 模块插入到包含单词 'category'.
的任何 url 中的模板中
一个例子url是:xyz.com/page/category/
我的有效代码是:
if(preg_match('/category/',$_SERVER['REQUEST_URI']))
echo '<jdoc:include type="modules" name="form" style="xhtml" />';
我意识到我需要将模块插入到仅出现在 'category' 之后的 url 的页面中。
例如:xyz.com/page/category/123 页分类后
我尝试了以下方法,但没有用:
if(preg_match('/category/?.*',$_SERVER['REQUEST_URI']))
如果你只需要在/category/
之后有字符的情况下评估为true,那么你需要使量词"one or more"(+
)而不是"zero or more"( *
)。事实上,你只需要检查/category/
之后是否有一个字符,所以让"any character"不可选。
这是一个方法:
if (preg_match('~/category/.~', $_SERVER['REQUEST_URI'])) {
请记住,正则表达式模式在 php 中需要 "pattern delimiters"。这次我用了代字号。您的第一个模式被正则表达式引擎解释为 category
,并将斜线视为定界符——这意味着您可能一直在匹配 "scategory-boardgame".
如果需要不区分大小写的匹配,请在第二个波浪号后写i
。 (模式修饰符)
如果您需要确保 /category/
后面的字符不是 url 的查询字符串或锚点部分,您可以过滤掉 ?
和 #
.
~/category/[^?#]~
我正在使用 preg_match 将 joomla 模块插入到包含单词 'category'.
的任何 url 中的模板中一个例子url是:xyz.com/page/category/
我的有效代码是:
if(preg_match('/category/',$_SERVER['REQUEST_URI']))
echo '<jdoc:include type="modules" name="form" style="xhtml" />';
我意识到我需要将模块插入到仅出现在 'category' 之后的 url 的页面中。
例如:xyz.com/page/category/123 页分类后
我尝试了以下方法,但没有用:
if(preg_match('/category/?.*',$_SERVER['REQUEST_URI']))
如果你只需要在/category/
之后有字符的情况下评估为true,那么你需要使量词"one or more"(+
)而不是"zero or more"( *
)。事实上,你只需要检查/category/
之后是否有一个字符,所以让"any character"不可选。
这是一个方法:
if (preg_match('~/category/.~', $_SERVER['REQUEST_URI'])) {
请记住,正则表达式模式在 php 中需要 "pattern delimiters"。这次我用了代字号。您的第一个模式被正则表达式引擎解释为 category
,并将斜线视为定界符——这意味着您可能一直在匹配 "scategory-boardgame".
如果需要不区分大小写的匹配,请在第二个波浪号后写i
。 (模式修饰符)
如果您需要确保 /category/
后面的字符不是 url 的查询字符串或锚点部分,您可以过滤掉 ?
和 #
.
~/category/[^?#]~