0

次のことをどのように回避しますか:

$_SESSION['myVar']=preg_match("[^a-zA-Z]",'',$_SESSION['myVar']);

echo $_SESSION['myVar'];

ディスプレイ

0

代わりに、var content ? を表示/出力します。preg_match混合型を提供しますが、これは問題ではありません...

なぜ、文字列自体の値が echo でアドレス指定できないのですか (その内容を比較することで、問題ありません)。

以前私が持っていた

$_SESSION['myVar']=ereg_replace("[^a-zA-Z]",'',$_SESSION['myVar']);

ereg_replaceの出力には、変数の内容が正しく表示されていました。

4

3 に答える 3

4

PHP の PCRE には区切り文字[docs]が必要であり、おそらくpreg_replace [ docs] が必要です。

preg_replace("/[^a-zA-Z]/",'',$_SESSION['myVar']);

があったと仮定するとpreg_replace、角かっこ ( [...]) は区切り文字として解釈されるため、エンジンは文字通り文字列の先頭で一致a-zA-Zを試み、コンストラクターを文字クラスとして解釈しません。

于 2012-10-12T09:49:08.403 に答える
1

問題は、preg_match がブール値を返し、パターンが一致した場合は 1、一致しなかった場合は 0 を返すことです。preg_match は出現箇所に一致するだけで、置換はしません。preg_match の使用方法は次のとおりです。

$matched = array();
preg_match("/[^a-zA-Z]/", $_SESSION["myVar"], $matches);

print_r($matches); // All matches are in the array.
于 2012-10-12T09:55:18.970 に答える
1

preg_match混合ではなく int を返します: http://php.net/manual/en/function.preg-match.php

一致を取得するには、matches パラメータを使用します。

于 2012-10-12T09:50:54.387 に答える