正则表达式中的#符号php

问题描述:

我在正则表达式中遇到了'#'符号的问题。 我有一个字符串(URL),它包含#符号。我如何用正则表达式检查它是否在这里或不在这里?正则表达式中的#符号php

这是字符串 “293892-MY-PAGE-#92.html” 和正则表达式

RewriteRule ^([0-9]*)-([\#a-z0-9-])*.html$ page.php [L] 

使用此我得到了 '293892-MY-PAGE-'

谁能帮助我有了这个?

+0

不匹配的。你是怎么得到它的? https://regex101.com/r/BK7RK3/1 –

+0

浏览器写我目前的URL'293892-my-page-'找不到 –

+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 
) 

要检查是否有在URL #符号。使用/#/(.*#.*).html作为您的正则表达式就足够了。对于一些复杂一点 - 所有的URL应该是与此类似 - 293892-my-page-#92.html,我们可以使用:

([\d]+-[a-z]+-[a-z]+-#[\d]+.)html 

Explanation

现在回到你原来的正则表达式[\#a-z0-9-]。你并不需要逃避课堂中的任何角色 - 没有必要使用\。例如[+*]将搜索星号或点。如果#是强制性的,我们不能使用字符类。 [#a-z0-9-]+将匹配从类任何字符重复一次或不限次数:

lorem ipsum 

------ 

Explanation