我在正则表达式中遇到'#'符号问题。 我有一个字符串(URL),它包含#符号。我怎么能用正则表达式检查它是否在这里?
这是字符串“293892-my-page-#92.html”和正则表达式
RewriteRule ^([0-9]*)-([\#a-z0-9-])*.html$ page.php [L]
使用这个我得到'293892-my-page - '
任何人都可以帮我吗?
答案 0 :(得分:0)
$content = '<a href="http://exaple.com/293892-my-page-#92.html"></a>';
preg_match("|/([0-9+].+?)\.html|si", $content, $matches);
print_r($matches);
结果:
Array
(
[0] => /293892-my-page-#92.html
[1] => 293892-my-page-#92
)
答案 1 :(得分:0)
检查网址中是否有#
个符号。使用/#/
(.*#.*).html
作为正则表达式就足够了。对于更复杂的东西 - 所有网址都应与此类似 - 293892-my-page-#92.html
,我们可以使用:
([\d]+-[a-z]+-[a-z]+-#[\d]+.)html
现在回到原始正则表达式[\#a-z0-9-]
。你真的不需要逃避课堂上的任何角色 - 没有必要使用\
。例如,[+*]
将搜索星号或点。如果#
是强制性的,我们就不能使用字符类。 [#a-z0-9-]+
将匹配来自班级的任何角色重复一次或无限次:
lorem ipsum
012345
------