2016-12-07 46 views
1

我在正則表達式中遇到了'#'符號的問題。 我有一個字符串(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

你使用什麼代碼? –

回答

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

要檢查是否有在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