我到我的脖子正則表達式,我有這樣的正則表達式,在JavaScript(和閃存)的作品,我只是不能在PHP轉換的Javascript正則表達式PHP(PCRE)表達
工作這就是:
var number
= '(?:-?\\b(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?\\b)';
var oneChar = '(?:[^\\0-\\x08\\x0a-\\x1f\"\\\\]'
+ '|\\\\(?:[\"/\\\\bfnrt]|u[0-9A-Fa-f]{4}))';
var str = '(?:\"' + oneChar + '*\")';
var varName = '\\$(?:' + oneChar + '[^ ,]*)';
var func = '(?:{[ ]*' + oneChar + '[^ ]*)';
// Will match a value in a well-formed JSON file.
// If the input is not well-formed, may match strangely, but not in an unsafe
// way.
// Since this only matches value tokens, it does not match whitespace, colons,
// or commas.
var jsonToken = new RegExp(
'(?:false|true|null'
+'|[\\}]'
+ '|' + varName
+ '|' + func
+ '|' + number
+ '|' + str
+ ')', 'g');
如果你想在這裏它完全組裝是:
/(?:false|true|null|[\}]|\$(?:(?:[^\0-\x08\x0a-\x1f"\\]|\\(?:["/\\bfnrt]|u[0-9A-Fa-f]{4}))[^ ,]*)|(?:{[ ]*(?:[^\0-\x08\x0a-\x1f"\\]|\\(?:["/\\bfnrt]|u[0-9A-Fa-f]{4}))[^ ]*)|(?:-?\b(?:0|[1-9][0-9]*)(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?\b)|(?:"(?:[^\0-\x08\x0a-\x1f"\\]|\\(?:["/\\bfnrt]|u[0-9A-Fa-f]{4}))*"))/g
有趣的是,它非常類似於JSON。
我需要這樣的正則表達式在PHP工作...
下面是我在PHP:
$number = '(?:-?\\b(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?\\b)';
$oneChar = '(?:[^\\0-\\x08\\x0a-\\x1f\"\\\\]|\\\\(?:[\"/\\\\bfnrt]|u[0-9A-Fa-f]{4}))';
$string = '(?:\"'.$oneChar.'*\")';
$varName = '\\$(?:'.$oneChar.'[^ ,]*)';
$func = '(?:{[ ]*'.$oneChar.'[^ ]*)';
$jsonToken = '(?:false|true|null'
.'|[\\}]'
.'|'.$varName
.'|'.$func
.'|'.$number
.'|'.$string
.')';
echo $jsonToken;
preg_match_all($jsonToken, $content, $out);
return $out;
這裏,如果我嘗試使用preg_match_all()會發生什麼:
警告:preg_match_all() [function.preg-match-all]:編譯 失敗:沒有重複的偏移量0 在線88
任何幫助將不勝感激!
謝謝, 馬特
就像一個魅力!太好了,謝謝! – Matt 2010-03-18 06:51:00