2016-02-07 83 views
0

我有一個字符串,我不控制的變量。解析一個變量,就像它是一個字符串文字

$foo = 'hey\nman';

(注意單引號,這是一個文字\ n不是換行符)

現在我想有富分析,如果它是一個雙引號,而不是單一的內部。所以它會將文字轉義字符轉換爲相應的ascii字符。所有/ r,/ n,/ b,/ t等

我有權訪問$foo但我無法更改爲其分配值的代碼。我的選擇是一個正則表達式,但可能會讓許多不同字符變得很難看。我喜歡PHP如何整潔地處理它,並想知道我是否可以利用它。

+0

'json_decode( 「 '」 + $富+ 「'」);'會的工作 –

+0

@PierreEmmanuelLallemant此對我而言返回0 – Gavriel

+0

@PierreEmmanuelLallemant看起來像它會工作!讓我檢查一下。 – Achshar

回答

1

你可以使用eval:

$foo = 'hey\nman'; 
eval ('$b = "' . $foo . '";'); 
var_dump($b); 
+1

是的eval是另一種選擇,但我覺得它很討厭,甚至考慮它 – Achshar

+0

不得不與這個一起去,因爲json_decode顯然對新行不太滿意,不過要添加斜線,因爲foo可以有引號。 '$ foo =''.addcslashes($ foo,''')。'「;');' – Achshar

0

您還可以使用字符串替換

$foo = str_replace('\n', "\n", $foo); 
+0

但他希望\ b,\ t等等 – Gavriel

+0

我在這個問題中寫過關於它的問題,正則表達式是一個選項但隨着越來越多的字符變得越來越混亂考慮到考慮因素。我不想保留所有可能的角色陣列。 – Achshar

+0

嗯,我明白了。我也理解你的評估問題... –

相關問題