static Variant str_replace(CVarRef search, CVarRef replace, CStrRef subject, int &count, bool caseSensitive) { if (search.is(KindOfArray)) { String ret = subject; Array searchArr = search.toArray(); if (replace.is(KindOfArray)) { Array replArr = replace.toArray(); ArrayIter replIter(replArr); for (ArrayIter iter(searchArr); iter; ++iter) { TAINT_OBSERVER(TAINT_BIT_MUTATED, TAINT_BIT_NONE); if (replIter) { ret = ret.replace(iter.second().toString(), replIter.second().toString(), count, caseSensitive); ++replIter; } else { ret = ret.replace(iter.second().toString(), "", count, caseSensitive); } } return ret; } TAINT_OBSERVER(TAINT_BIT_MUTATED, TAINT_BIT_NONE); String repl = replace.toString(); for (ArrayIter iter(searchArr); iter; ++iter) { ret = ret.replace(iter.second().toString(), repl, count, caseSensitive); } return ret; } if (replace.is(KindOfArray)) { raise_notice("Array to string conversion"); } TAINT_OBSERVER(TAINT_BIT_MUTATED, TAINT_BIT_NONE); return subject.replace(search.toString(), replace.toString(), count, caseSensitive); }