
function preg_split(pattern,subject,limit,flags){
limit=limit||0;flags=flags||'';
var result,ret=[],index=0,i=0,
noEmpty=false,delim=false,offset=false,
OPTS={},optTemp=0,
regexpBody=/^\/(.*)\/\w*$/.exec(pattern.toString())[1],
regexpFlags=/^\/.*\/(\w*)$/.exec(pattern.toString())[1];
pattern=pattern.global&&typeof pattern!=='string'?pattern:
new RegExp(regexpBody,regexpFlags+(regexpFlags.indexOf('g')!==-1?'':'g'));
OPTS={
'PREG_SPLIT_NO_EMPTY':1,
'PREG_SPLIT_DELIM_CAPTURE':2,
'PREG_SPLIT_OFFSET_CAPTURE':4
};
if(typeof flags!=='number'){
flags=[].concat(flags);
for(i=0;i<flags.length;i++){
if(OPTS[flags[i]]){
optTemp=optTemp|OPTS[flags[i]];
}
}
flags=optTemp;
}
noEmpty=flags&OPTS.PREG_SPLIT_NO_EMPTY;
delim=flags&OPTS.PREG_SPLIT_DELIM_CAPTURE;
offset=flags&OPTS.PREG_SPLIT_OFFSET_CAPTURE;
var _filter=function(str,strindex){
if(noEmpty&&!str.length){return;}
if(offset){str=[str,strindex];}
ret.push(str);
};
if(!regexpBody){
result=subject.split('');
for(i=0;i<result.length;i++){
_filter(result[i],i);
}
return ret;
}
while(result=pattern.exec(subject)){
if(limit===1){break;}
_filter(subject.slice(index,result.index),index);
index=result.index+result[0].length;
if(delim){
var resarr=Array.prototype.slice.call(result);
for(i=1;i<resarr.length;i++){
if(result[i]!==undefined){
_filter(result[i],result.index+result[0].indexOf(result[i]));
}
}
}
limit--;
}
_filter(subject.slice(index,subject.length),index);
return ret;
}
function preg_match(pattern,subject,matches,flags,offset){
var i=0,lastDelimPos=-1,flag='',patternPart='',flagPart='',array=[],regexpFlags='',subPatternNames=[];
var getFuncName=function(fn){
var name=(/\W*function\s+([\w\$]+)\s*\(/).exec(fn);
if(!name){
return'(Anonymous)';
}
return name[1];
};
var join=function(arr){
return'(?:'+arr.join('|')+')';
};
if(typeof pattern==='string'){
if(pattern===''){
}
lastDelimPos=pattern.lastIndexOf(pattern[0]);
if(lastDelimPos===0){
pattern=new RegExp(pattern);
}
else{
patternPart=pattern.slice(1,lastDelimPos);
flagPart=pattern.slice(lastDelimPos+1);
for(i=0;i<flagPart.length;i++){
flag=flagPart[i];
switch(flag){
case'g':
case'm':
case'i':
regexpFlags+=flag;
break;
case'e':
break;
case's':
case'x':
case'A':
case'D':
case'U':
case'J':
case'u':
throw'The passed flag "'+flag+'" is presently unsupported in '+getFuncName(arguments.callee);
case'X':
throw'X flag is unimplemented at present';
if(/\/([^\\^$.[\]|()?*+{}aefnrtdDhHsSvVwWbBAZzGCcxkgpPX\d])/.test(patternPart)){
throw'You are in "X" (PCRE_EXTRA) mode, using a reserved and presently unused escape sequence in '+getFuncName(arguments.callee);
}
break;
case'S':
throw'The passed flag "'+flag+'" to '+getFuncName(arguments.callee)+' cannot be implemented in JavaScript';
case'y':
throw'Flag "y" is a non-cross-browser, non-PHP flag, not supported in '+getFuncName(arguments.callee);
default:
throw'Unrecognized flag "'+flag+'" passed to '+getFuncName(arguments.callee);
}
}
}
}
else{
patternPart=pattern.source;
regexpFlags+=pattern.global?'g':'';
regexpFlags+=pattern.ignoreCase?'i':'';
regexpFlags+=pattern.multiline?'m':'';
}
patternPart=patternPart.replace(/\(\?<(.*?)>(.*?)\)/g,function(namedSubpattern,name,pattern){
subPatternNames.push(name);
return'('+pattern+')';
});
pattern=new RegExp(patternPart,regexpFlags);
array[0]=pattern.exec(subject);
if(!array[0]){
return 0;
}
if(offset){
}
if(flags==='PREG_OFFSET_CAPTURE'||flags===256){
return 1;
}
for(i=0;i<array[0].length;i++){
matches[i]=array[0][i];
if(i>0&&subPatternNames[i-1]!==undefined){
matches[subPatternNames]=array[0][i];
}
}
return 1;
}
function end(arr){
this.php_js=this.php_js||{};
this.php_js.pointers=this.php_js.pointers||[];
var indexOf=function(value){
for(var i=0,length=this.length;i<length;i++){
if(this[i]===value){
return i;
}
}
return-1;
};
var pointers=this.php_js.pointers;
if(!pointers.indexOf){
pointers.indexOf=indexOf;
}
if(pointers.indexOf(arr)===-1){
pointers.push(arr,0);
}
var arrpos=pointers.indexOf(arr);
if(Object.prototype.toString.call(arr)!=='[object Array]'){
var ct=0;
for(var k in arr){
ct++;
var val=arr[k];
}
if(ct===0){
return false;
}
pointers[arrpos+1]=ct-1;
return val;
}
if(arr.length===0){
return false;
}
pointers[arrpos+1]=arr.length-1;
return arr[pointers[arrpos+1]];
}
function number_format(number,decimals,dec_point,thousands_sep){
number=(number+'').replace(/[^0-9+\-Ee.]/g,'');
var n=!isFinite(+number)?0:+number,
prec=!isFinite(+decimals)?0:Math.abs(decimals),
sep=(typeof thousands_sep==='undefined')?',':thousands_sep,
dec=(typeof dec_point==='undefined')?'.':dec_point,
s='',
toFixedFix=function(n,prec){
var k=Math.pow(10,prec);
return''+Math.round(n*k)/k;
};
s=(prec?toFixedFix(n,prec):''+Math.round(n)).split('.');
if(s[0].length>3){
s[0]=s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g,sep);
}
if((s[1]||'').length<prec){
s[1]=s[1]||'';
s[1]+=new Array(prec-s[1].length+1).join('0');
}
return s.join(dec);
}
function floatval(mixed_var){
return(parseFloat(mixed_var)||0);
}
function implode(glue,pieces){
var i='',
retVal='',
tGlue='';
if(arguments.length===1){
pieces=glue;
glue='';
}
if(typeof(pieces)==='object'){
if(pieces instanceof Array){
return pieces.join(glue);
}else{
for(i in pieces){
retVal+=tGlue+pieces[i];
tGlue=glue;
}
return retVal;
}
}else{
return pieces;
}
}
function explode(delimiter,string,limit){
var emptyArray={
0:''
};
if(arguments.length<2||typeof arguments[0]=='undefined'||typeof arguments[1]=='undefined'){
return null;
}
if(delimiter===''||delimiter===false||delimiter===null){
return false;
}
if(typeof delimiter=='function'||typeof delimiter=='object'||typeof string=='function'||typeof string=='object'){
return emptyArray;
}
if(delimiter===true){
delimiter='1';
}
if(!limit){
return string.toString().split(delimiter.toString());
}else{
var splitted=string.toString().split(delimiter.toString());
var partA=splitted.splice(0,limit-1);
var partB=splitted.join(delimiter.toString());
partA.push(partB);
return partA;
}
}
function urldecode(str){
return decodeURIComponent((str+'').replace(/\+/g,'%20'));
}
function urlencode(str){
str=(str+'').toString();
return encodeURIComponent(str).replace(/!/g,'%21').replace(/'/g,'%27').replace(/\(/g,'%28').
replace(/\)/g,'%29').replace(/\*/g,'%2A').replace(/%20/g,'+');
}
function intval(mixed_var,base){
var tmp;
var type=typeof(mixed_var);
if(type==='boolean'){
return(mixed_var)?1:0;
}else if(type==='string'){
tmp=parseInt(mixed_var,base||10);
return(isNaN(tmp)||!isFinite(tmp))?0:tmp;
}else if(type==='number'&&isFinite(mixed_var)){
return Math.floor(mixed_var);
}else{
return 0;
}
}
function empty(mixed_var){
var key;
if(mixed_var===""||mixed_var===0||mixed_var==="0"||mixed_var===null||mixed_var===false||typeof mixed_var==='undefined'){
return true;
}
if(typeof mixed_var=='object'){
for(key in mixed_var){
return false;
}
return true;
}
return false;
}
function str_replace(search,replace,subject,count){
var i=0,
j=0,
temp='',
repl='',
sl=0,
fl=0,
f=[].concat(search),
r=[].concat(replace),
s=subject,
ra=r instanceof Array,
sa=s instanceof Array;
s=[].concat(s);
if(count){
this.window[count]=0;
}
for(i=0,sl=s.length;i<sl;i++){
if(s[i]===''){
continue;
}
for(j=0,fl=f.length;j<fl;j++){
temp=s[i]+'';
repl=ra?(r[j]!==undefined?r[j]:''):r[0];
s[i]=(temp).split(f[j]).join(repl);
if(count&&s[i]!==temp){
this.window[count]+=(temp.length-s[i].length)/f[j].length;
}
}
}
return sa?s:s[0];
}
