PHP echo - >字符串为0?

时间:2012-10-12 09:46:50

标签: php preg-match echo

我如何避免以下情况:

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

echo $_SESSION['myVar'];

显示器

0

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

为什么,字符串本身的值不能用echo来解决(通过 comapring 其内容, OK )?

以前我有

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

蚂蚁输出óf ereg_replace 正确显示了变量内容。

3 个答案:

答案 0 :(得分:4)

PHP中的PCRE需要delimiters [docs],您可能需要preg_replace [docs]

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

假设您有preg_replace,即使这样,括号([...])也会被解释为分隔符,因此引擎会尝试匹配字符串开头的a-zA-Z和不会将构造函数解释为字符类。

答案 1 :(得分:1)

preg_match返回一个int,而不是混合:http://php.net/manual/en/function.preg-match.php

使用matches参数获取匹配项。

答案 2 :(得分: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.