phpBB2 by Przemo
Support forów phpBB2 modified by Przemo

FAQFAQ - PIERWSZA POMOC!!  regulaminREGULAMIN  SzukajSZUKAJ  UżytkownicyUżytkownicy  GrupyGrupy  StatystykiStatystyki
RejestracjaRejestracja  ZalogujZaloguj  DownloadDownload  katalog Forów DyskusyjnychKatalog Forów   FAQ Video tutoriale

Poprzedni temat «» Następny temat
[php] BBcode [age]
Autor Wiadomość
Lorgan

Posty: 55
Wysłany: 01-04-2017, 20:27   [php] BBcode [age]

Witam,

Próbuję przygotować nowy BBcode, który spełniałby prostą funkcję: odejmował wartość wpisaną w tag od aktualnego roku.

Przykład:
[age=17], dałoby w roku 2017-stym 2000, a w 2020-stym 2003.

Póki co, przygotowałem:

includes/bbcode.php
Kod:
    $text = str_replace("[year]", "[year:$uid]", $text);
      $current_year = (int)date('Y');
      $tenchi_year = $current_year - 400;
      $text = str_replace("[year:$uid]", $tenchi_year, $text);
     
      $text = preg_replace("#\[age=([1-9]?[0-9])\]#si", "[age=\\1:$uid]", $text);
      if (strpos($text, "[age=12:$uid]"))
      {
            $age_mod = 12;
      }
            else
      {
            $age_mod = $tenchi_year;
      }
      $age = $tenchi_year - $age_mod;
      $text = preg_replace("/\[age=([1-9]?[0-9]):$uid\]/si", $age, $text);

Niestety utknąłem i nie mam pomysłu, jak to pociągnąć dalej. Nie chcę definiować każdej wartości z osobna, tylko użyć tego, co zostało wpisane po "age=". Niestety nie wiem, jak wcisnąć tę wartość do zmiennej :/

Czy znalazłby się ktoś tak dobry, żeby mi pomóc? :roll:

PS. Tag [year] napisałem przy okazji.

Pozdr.

[ Dodano: 18-05-2017, 23:47 ]
Udało mi się wreszcie przygotować działający kod. Rok urodzenia wpisuje się między tagi [age][/age]. Niestety, obliczenie wieku wykonuje się tylko raz na post. Jeśli ktoś potrafi i chce mi pomóc to przerobić tak, żeby działało na dowolną ilość tagów, będę zobowiązany.
Kod:
    // Year (Tenchi PBF)
    $text = str_replace("[year]", "[year:$uid]", $text);
      $current_year = (int)date('Y');
      $tenchi_year = $current_year - 400;
      $text = str_replace("[year:$uid]", $tenchi_year, $text);
     
      // Charater Age (Tenchi PBF)
      $text = str_replace("[age]", "[age:$uid]", $text);
      $text = str_replace("[/age]", "[/age:$uid]", $text);
    $age_start = "[age:$uid]";
    $age_end   = "[/age:$uid]";
    $age_val = $text;
    $age_output = strstr(substr($age_val, strpos($age_val, $age_start) + strlen($age_start)), $age_end, true);
    $age_total = $tenchi_year - $age_output;
    $text = preg_replace("#\[age:$uid\](.*?)\[/age:$uid\]#si", $age_total, $text);

Pozdr.

[ Dodano: 20-05-2017, 11:22 ]
Udało mi się wreszcie poradzić z problemem. Przedstawiam kompletny kod:
Kod:
    // Year (Tenchi PBF)
    $text = str_replace("[year]", "[year:$uid]", $text);
      $current_year = (int)date('Y');
      $tenchi_year = $current_year - 400;
      $text = str_replace("[year:$uid]", $tenchi_year, $text);
     
      // Charater Age (Tenchi PBF)
      $text = preg_replace_callback(
    "(\[age\](.*?)\[/age\])is",
    function($m) {
        static $id = 0;
        $id++;
        return "[age:sid".$id."]".$m[1]."[/age:sid".$id."]";
    },
    $text);
    $text = preg_replace("#\[age:(.*?)\](.*?)\[/age:(.*?)\]#si", "[age:\\1:$uid]\\2[/age:\\3:$uid]", $text);
    foreach (range(1, 200) as $sid)
    {
        $age_start = "[age:sid$sid:$uid]";
        $age_end   = "[/age:sid$sid:$uid]";
        $age_output = strstr(substr($text, strpos($text, $age_start) + strlen($age_start)), $age_end, true);
        if (!filter_var($age_output, FILTER_VALIDATE_INT) === false)
        {
            $age_total = $tenchi_year - $age_output;
            $text = preg_replace("#\[age:sid$sid:$uid\](.*?)\[/age:sid$sid:$uid\]#si", $age_total, $text);
        }
        else
        {
            $text = preg_replace("#\[age:sid$sid:$uid\](.*?)\[/age:sid$sid:$uid\]#si", "[age]\\1[/age]", $text);
        }
    }

Pozdr.
_________________
Zapraszam na moje forum.
 
     
Gadatliwa Kasia 

   
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Kopiowanie wszelkich treści zawartych na forum, modyfikacji oraz instrukcji bez zgody administracji i autorów tematów/postów zabronione!

Powered by phpBB modified by Przemo © 2003 phpBB
Strona wygenerowana w 0,09 sekundy. Zapytań do SQL: 12
Polecane serwisy

Najlepsze oprogramowanie do prowadzenia sklepu internetowegoNajlepszy program do sklepu firmowany przez Przem'a

Sklep z gadżetami

mediaclick.pl

serwis laptopów

phpbb

Polisy Ubezpieczeniowe TU Europa

Design Cart - Tworzenie sklepu internetowego

dnirozwoju.pl

Ranking Hostingów HostingOnline.pl

• Zamów reklamę