2016-12-07 10 views
1

正規表現で「#」記号に問題があります。 文字列(URL)があり、#記号が含まれています。正規表現でチェックするにはどうしたらいいですか?#正規表現のシンボル#

これは、誰も私を助けることができる私は '293892-MY-PAGE-'

を得た文字列 "293892-MY-PAGE-#の92.html" と正規表現これを使用して

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

ですこれとともに?

+0

は全く一致していません:[#a-z0-9-]+はクラスから任意の文字は、1つまたは無制限回繰り返しと一致します。どうしてあなたはそれを手に入れましたか? 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はこの1つのようになります - 293892-my-page-#92.html、我々は使用することができます。

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

Explanation

バックあなたの元の正規表現[\#a-z0-9-]へ。クラス内の文字をエスケープする必要はありません。\を使用する必要はありません。たとえば、[+*]は、星やドットを検索します。 #が必須の場合は文字クラスを使用できません。

lorem ipsum 

------ 

Explanation