Ik probeer d.m.v. een bbcode-achtig scriptje een replacement door te geven aan een andere functie, die met de doorgegeven variabelen weer gegevens uit een database haalt.
Ter verduidelijking, deze functie haalt m.b.v. een product-ID ($pid) en een productoptie-ID ($oid) een totale prijs ($attr_price['excl']) en BTW-percentage ($attr_price['tax']) op.
Tot zover werkt alles, wanneer ik handmatig wat getallen in klop. Verderop gaat het echter fout:
Dit zou dus ((373:107)) moeten vervangen en 373 en 107 als respectievelijk $pid en $oid moeten doorgeven. Makkelijker gezegd dan gedaan. Hier een aantal dingen die ik heb geprobeerd door de return in bb_attribute te vervangen, met de uitwerking die ze hadden:
Kortom: '$1' komt ook door als string '$1', maar toch ook als '373'.
Wat zie ik over het hoofd?
Ter verduidelijking, deze functie haalt m.b.v. een product-ID ($pid) en een productoptie-ID ($oid) een totale prijs ($attr_price['excl']) en BTW-percentage ($attr_price['tax']) op.
PHP:
1
2
3
4
5
6
| function bb_attribute ($pid, $oid) { global $currencies; $attr_price_query = tep_db_query("SELECT (p.products_price + pa.options_values_price) AS excl, tr.tax_rate AS tax FROM products p, products_attributes pa, tax_rates tr WHERE p.products_id = '".$pid."' AND pa.products_id = p.products_id AND options_values_id = '".$oid."' AND tr.tax_class_id = p.products_tax_class_id;"); $attr_price = tep_db_fetch_array($attr_price_query); return $currencies->display_price($attr_price['excl'],$attr_price['tax']); } |
Tot zover werkt alles, wanneer ik handmatig wat getallen in klop. Verderop gaat het echter fout:
PHP:
1
| $str = preg_replace("#\(\((.*?):(.*?)\)\)#is", bb_attribute('$1','$2'), $str); |
Dit zou dus ((373:107)) moeten vervangen en 373 en 107 als respectievelijk $pid en $oid moeten doorgeven. Makkelijker gezegd dan gedaan. Hier een aantal dingen die ik heb geprobeerd door de return in bb_attribute te vervangen, met de uitwerking die ze hadden:
PHP:
1
2
3
4
5
6
7
| return $pid; // 373 return gettype($pid) // string return (int)$pid; // 0 return intval($pid) // 0 return $pid * 1; // 0 return $pid[0]; // $ return $pid[1]; // 1 |
Kortom: '$1' komt ook door als string '$1', maar toch ook als '373'.