2012-10-12 76 views
0

我將如何避免以下幾點:PHP回聲 - >字符串爲0?

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

echo $_SESSION['myVar']; 

顯示

0 

,而是它顯示/輸出VAR內容? 的preg_match給出混合類型,但是這不應該是問題...

爲什麼,是自身不相呼應尋址的字符串值(comapring其內容由,它是OK) ?

以前我有

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

螞蟻輸出ereg_replace正確顯示變量的內容。

+0

只需使用'preg_replace'? – rabudde

+0

'ereg_replace()'已棄用。 –

+0

preg_replace是答案......不知何故,我的失明讓我像preg_replace一樣閱讀preg_match ......感謝大家! – HeinrichStack

回答

4

PCRE在PHP需要delimiters [docs],你可能想preg_replace[docs]

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

假設你有preg_replace,即使在當時,括號([...])會被解釋爲分隔符,因此發動機會從字面上盡力配合a-zA-Z在字符串的開頭,並不會將構造函數解釋爲字符類。

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.