hej der ude..
jeg forsøger at lave et loop/forløkke med noget bbkode alike.
her er hvad jeg har
- $html = '[loop:i=0;i<=10;i++]
- <div id="div_nr_{loop:i}" />
- [/loop]';
- preg_replace_callback('/\[loop:(.*)\][^]](.*)[^[]+\[\/loop\]/', "makeLoop", $html);
-
- echo $html;
-
-
- function makeLoop($arg) {
- global $str;
- //print_r($arg);
- $matches = array();
- $tmpRes = "";
- preg_match_all('/\[loop:(.*)\][^]](.*)[^[]+\[\/loop\]/', $arg[0], $matches, PREG_SET_ORDER);
- if (count($matches) > 0) {
- foreach ($matches as $match) {
- $forLoopArray = explode(";", $match[1]);
- $keyArr = explode("=", $forLoopArray[0]);
- $forLoopArray[1] = substr($forLoopArray[1], 1, strlen($forLoopArray[1]) - 1);
- $tal = array(1 => "", 2 => "", 3 => "", 4 => "", 5 => "", 6 => "", 7 => "", 8 => "", 9 => "", 0 => "");
- $endInt = (int) $str->replace($forLoopArray[1], array("<" => "", ">" => "", "=" => ""));
- $startInt = (int) $keyArr[1];
- $mode = substr($forLoopArray[2], strlen($forLoopArray[2]) - 1, strlen($forLoopArray[2]) - 1);
- $m = $str->replace($forLoopArray[1], $tal);
- /*
- echo "
- start: $startInt
- end: $endInt
- mode: $mode
- m: $m"; */
- switch ($m) {
- case "=":
- if ($mode == "+") {
- for ($i = $startInt; $i == $endInt; $i++) {
- $tmpRes .= $match[2];
- }
- } else {
- for ($i = $startInt; $i == $endInt; $i--) {
- $tmpRes .= $match[2];
- }
- }
- break;
- case ">":
- if ($mode == "+") {
- for ($i = $startInt; $i > $endInt; $i++) {
- $tmpRes .= $match[2];
- }
- } else {
- for ($i = $startInt; $i > $endInt; $i--) {
- $tmpRes .= $match[2];
- }
- }
- break;
- case ">=":
- if ($mode == "+") {
- for ($i = $startInt; $i >= $endInt; $i++) {
- $tmpRes .= $match[2];
- }
- } else {
- for ($i = $startInt; $i >= $endInt; $i--) {
- $tmpRes .= $match[2];
- }
- }
- break;
- case "<":
- if ($mode == "+") {
- for ($i = $startInt; $i < $endInt; $i++) {
- $tmpRes .= $match[2];
- }
- } else {
- for ($i = $startInt; $i < $endInt; $i--) {
- $tmpRes .= $match[2];
- }
- }
- break;
- case "<=":
- if ($mode == "+") {
- for ($i = $startInt; $i <= $endInt; $i++) {
- $tmpRes .= $match[2];
- }
- } else {
- for ($i = $startInt; $i <= $endInt; $i--) {
- $tmpRes .= $match[2];
- }
- }
- break;
- default :
-
- break;
- }
- }
- //print_r($this->tags);
- return $tmpRes;
- }
- }
jeg kan ikke få det til at virke, ingen fejl - der sker bare ikke noget..
forslag og ider til hvordan dette laves modtages gerne