0

我将如何避免以下情况:

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

echo $_SESSION['myVar'];

显示

0

而是显示/输出 var 内容?preg_match给出混合类型,但这不应该是问题......

为什么,字符串本身的值不能用 echo 寻址(通过对其内容进行映射,就可以了)?

以前我有

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

ant 的输出 óf 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返回一个 int,不混合: http: //php.net/manual/en/function.preg-match.php

使用matches 参数来获取您的匹配项。

于 2012-10-12T09:50:54.387 回答
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 回答