|
|
phpBB2 by Przemo
Support forów phpBB2 modified by Przemo
|
|
[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?
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
|
|
|
|
|
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
|
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: 13 | |
|
|