2012-02-17 9 views
0

私はPHPの正規表現に出くわしました、以下で言及しましたが、私はなぜ\q\が使われているのか分かりません。次のphp正規表現はどのように評価されますか?

$strBuildTitle="SOME URL"; 
$patterns[0] = "/[^a-zA-Z0-9\q\ ]/";   
$replacements[0] = " "; 

$strBuildTitle = preg_replace($patterns, $replacements, $strBuildTitle); 

私は\q\が、ここで使用されている理由、それは、与えられたURLからわからない任意の非英数字文字を削除しようと考えています。引用符の削除に関連していますか?

答えて

2

\q\は無効ですescape sequencesです。二重引用符で囲まれた文字列で

、それは\は単にqになって\qになって意味、それらを無視して、彼らの見かけの値でそれらを置き換えるためにPHPの方針です。後者のケースは既に[a-z]でカバーされています。

+0

Nah。 PHPは未知のC文字列エスケープの前にバックスラッシュを保持します。 '' \ q "'の意味はPCREに達するまで文字列値に '\ q'のままです。その文脈で文字「q」と同じになるのはPCREです。 – mario

+0

ちょうど好奇心。 'print 'はあなたに何を与えるのですか? –

+0

'<? "\ j"を印刷します。 ?> '私に' ... \ j ... 'の出力を与えます – mario

関連する問題