2013-10-07 185 views
-2

我在python上找到了我的任務解決方案。但我根本不知道python。代碼:將python代碼轉換爲php

import re 
import json 
a = open('test.txt').read() 
a = re.sub('"[ \t]*"', '":"', a) 
a = re.sub('"\s+"', '","', a) 
a = re.sub('"\s+{', '":{', a) 
a = re.sub('}\s+"', '},"', a) 
a = '{%s}' % a 
b = json.loads(a) 

試圖將其轉換類推到PHP:

$a = file_get_contents('test.txt'); 
$a = preg_replace('"[ \t]*"', '":"', $a); 
$a = preg_replace('"\s+"', '","', $a); 
$a = preg_replace('"\s+{', '":{', $a); 
$a = preg_replace('}\s+"', '},"', $a); 
$a = '{'.$a.'}'; 
$b = json_decode($a); 

但是好像表達錯了。有人可以幫忙嗎?

+0

添加調試打印語句中的每個替換操作後兩者的差異... –

+0

格局'preg_replace'封閉用斜槓 – Ander2

+0

你需要看看在preg_replace函數的文檔()和PCRE表達式 我懷疑你可以從字面上將Python使用的表達式直接放入preg_replace()函數,除非它們使用REGEX的相同標準。 – Luke

回答

2

在PHP中,我認爲正則表達式需要在2 x /例如

$a = preg_replace('/"[ \t]*"/', '":"', $a); 

編輯:安德烈提到的,分隔符並不一定需要是斜線,但是我覺得你使用雙引號是爲了用作正則表達式的一部分,而不是分隔符。

+0

OP使用雙引號來分隔他的正則表達式,這是[有效](http://ca.php.net/manual/en/regexp.reference.delimiters.php) –

+0

這是真的,但我認爲OP可能試圖搜索雙引號而不是使用他們作爲分隔符 – Jonathon

+0

謝謝@Jonathon。現在它工作正常。 –