[Назад] [Вся нить] [Первые 100 сообщений] [Последние 50 сообщений]
Ответ в нить [Последние 50 сообщений]
Имя
Captcha image [Д]
Animapcha image [@] [?] [Т]
Тема   ( ответ в 1000000)
Сообщение flower
Файл 
Пароль  (для удаления файлов и сообщений)
Параметры   
  • Прежде чем постить, ознакомьтесь с правилами.
  • Поддерживаются файлы типов GIF, JPG, PNG, WEBP размером до 20480 кБ.
  • Ныне 25 уникальных клиентов. Посмотреть каталог
  • Предельное количество бампов нити: 200
No. 1000000  
Технический пост, резервирующий номера постов для возможного импорта истории из архива.

Можно постить сюда замечания и предложения по оформлению и функционалу сайта.
84 сообщений пропущено. Показаны 50 последних сообщений
No. 1000100  
>>1000093
И правда работает, спасибо, спасение.
No. 1000101  
>>1000097
181 спойлер и 1 удалённая картинка. Job's done.
No. 1000102  
В капче не работает "б", то есть ",".
No. 1000103  
>>1000102
Точнее, не работает ",", а "б"-то работает.
No. 1000106  
>>1000102
Fixed
No. 1000110  
Favicon kitaaa---!!
No. 1000134  
it_works.webp - (40.46KB, 868×691)
1000134
>>1000088
С escape-ами там, как оказалось, сравнительно просто всё. Написал вот через '~' escaping. '~' на что-то влияет только перед символами разметки (`|*|%|^|[) или в объялении пункта списка \n\r[#✶+-]. Может escape-ить сам себя, но только, когда это имеет смысл.

А вот с блоками, их вложенностями и приоритетами, кажется, несколько сложнее. Но подумаю. Может, по удвоенному `-у сделаю.
No. 1000135  
escapes.webp - (37.89KB, 1715×437)
1000135
Архив с кодом в картинке.
No. 1000136  
>>1000135
Спасибо, принял пока так.
Я пытаюсь переписать парсер на нормальную, не-регексповую обработку, но это хорошо если на неделе. Могу скинуть черновик.
No. 1000137  
j3zBw2bq.png - (3.86MB, 1856×1280)
1000137
>>1000136
Скинь.

Там даже если с регулярками, всё равно дорабатывать надо: не так просто оказалось, возможность escape-ить ~ неограниченное количество раз всё-таки нужна. Из-за этого, например, strtr-ом для ~` не обойтись, нужны будут изменения в callback-ах кода/латеха, а регулярка для парсинга кода будет выглядеть как-то (^|\G|[^~])(~~)*\K`([^~`]|~.)+?` так.
No. 1000138  
>>1000137
function BBCode($string){
$lines = explode(PHP_EOL,$string);
$in_ul = false;
$in_ol = false;
$block = [];
foreach($lines as $line) {
if (preg_match('^[\-\*] ([^\r\n])+)')){
if ($in_ol){
$in_ol = false;
$output .= '</ol>';
}
if (!$in_ul){
$in_ul = true;
if ($block){
$output .= apply_format($block);
$block = [];
}
$output .= '<ul>';
}
$output .= '<li>'.apply_format([$matches[1]]).'</li>';
}
else if (preg_match('^[+\#] ([^\r\n])+)')){
if ($in_ul){
$in_ul = false;
$output .= '</ul>';
}
if (!$in_ol){
$in_ol = true;
if ($block){
$output .= apply_format($block);
$block = [];
}
$output .= '<ol>';
}
$output .= '<li>'.apply_format([$matches[1]])."</li>";
}
else{
if ($in_ol){
$in_ol = false;
$output .= '</ol>';
}
if ($in_ul){
$in_ul = false;
$output .= '</ul>';
}
array_push($block, $line);
}
}
$output .= apply_format($block);
return $output;
}

function apply_format($lines){
$patterns = [
['\[code]', '\[/code]', '<span class="inline-code">', '</span>', 1, inline_code_callback],
['\', '\', '<b>', '</b>', 1],
['\', '\', '<i>', '</i>', 1],
['\', '\', '<span style="text-decoration: underline;">', '</span>', 1],
['\', '\', '<strike>', '</strike>', 1],
['\', '\', '<span style="font-family: Mona,\'MS PGothic\' !important;">', '</span>', 1],
['\', '\', '<span class="spoiler">', '</span>', 1],
['\\', '\\', '<b>', '</b>', 0],
['\', '\', '<i>', '</i>', 0],
['', '', '<span class="spoiler">', '</span>', 0],
['\^\^', '\^\^', '<strike>', '</strike>', 0],
['', '', '<span class="inline-code">', '</span>', 0],

];
$stack = [];
$pattern = "\n";
foreach($patterns as $pattern){
$pattern .= "|$pattern[1]";
}
foreach($patterns as $pattern){
if ($pattern[1] != $pattern[0]){
$pattern .= "|$pattern[0]";
}
}
$pattern = "((?!~)~|)~+~~?($pattern)";
foreach($lines as $line) {
preg_match($pattern, $line, $matches, PREG_OFFSET_CAPTURE);
aray_unshift($matches)
foreach($matches as $match){
;
}
}

}
Разбиваем текст на строки, в каждой строке ищем начала и концы тегов. Если тег закрывающий, пытаемся закрыть последний тег, если совпадает. Если тег закрывающий, пытаемся закрыть, если последний открытый тег совпадает. Если открывающий, запоминаем позицию, кладём предыдущую подстроку на стек, и идём по текущей (можно рекурсией). На конце строки дропаем незакрытые инлайны, на конце блока дропаем вообще всё. В коде игнорируем всё кроме закрытия кода (+ надо перебивать : для ссылок). Списки считаются как отдельные блоки исключительно инлайнов.
preg_match не может в /g, поэтому придётся ещё в цикл оборачивать.
No. 1000139  
>>1000138
Ах, да, оно так не работает.
https://gist.github.com/yakui-lover/616e8bad552395cd031453c05e2eb596
No. 1000146  
Jus use pastebin clone, Luke.
No. 1000147  
code_zip.webp - (73.71KB, 966×737)
1000147
https://pastebin.com/kf3a4kyu
Попробовал сделать без разбиения по строкам.
Вышло громоздко, хотя вроде работает.

Проходимся по всем тегам типа ~~~~~~^^ или ~~~~~~[/b], смотрим, применимо или не применимо в текущем контексте, если применимо, то копируем ещё не скопированный текст до тега, и если не за-escape'лено, то либо открываем блок, либо закрываем блоки до нужного по стеку. Код escape'ит всё, кроме терминаторов кода и escape'ов к ним. Списки более-менее наравне с остальными тегами, хотя обрабатываются несколько отдельно.
No. 1000148  
Допустимо ли? >>/b/1000899
No. 1000149  
f26fe872ae6833900d0b5234f24f1129.jpg - (876.64KB, 1217×2048)
1000149
>>1000148
Кажется, не хентайнее этого эпизода прилии
https://gelbooru.com/index.php?page=post&s=list&tags=md5%3a267af70a53630db7e1de70de943530bd
Пусть это и версия, где пар отредактирован.
No. 1000150  
>>1000148
Под спойлером должно быть нормально.
В худшем случае я задумаюсь о другом хостере картинок.

>>1000147
Ну, давайте пробовать.
test
Скорее всего надо стили править если не инлайн-спаном делать.

Я правильно читаю, что вмарк так тоже мультилайн становится? Я думал как раз его оставить действующим только внутри строки. И ws нигде не используется. Но на глас вроде всё верно.
No. 1000152  
83028242_p2.jpg - (2.63MB, 6942×4848)
1000152
>>1000150
> Я правильно читаю, что вмарк так тоже мультилайн становится?
Да, *, **, ^^, `, %% все multiline-овые. Но так-то они multiline-овыми и раньше были же. Чуть усложнив код, можно коллапсить упомянутую вакабу по \r\n, нужно поменять проверки в начале for-а и поменять содержимое if-а для \r\n завершения списка. Но пока не могу понять смысл идеи. Разве чтобы можно было одну * в начале строки поставить, и оно само закрылось. Но тогда если кто-то по привычке попробует через * * сделать несколько линий курсивом, у него не получится, и ему на [i] и [/i] придётся менять.

Думаю, можно добвать блок ``some text``, где символы форматирования будут игнорироваться:
  • В array c описанием mark-ов добавить '``' => ['``', '', ''], и '[nofmt]' => ['\[nofmt]|\[\/nofmt]', '', '', '``', '[/nofmt]'],;
  • В if, где $states['`'] && $mark != '`' || $states['[code]'] && $mark != '[/code]', добавть ещё две проверки.

> И ws нигде не используется
Wide [character] strings? Кажется, там достаточно обычных ASCIIшных функций, без mb и w префиксов.
No. 1000153  
>>1000152
А, я не ответил
>Wide [character] strings?
Нет, массив с таким именем.
>Но пока не могу понять смысл идеи.
Я думал вакаба-марк сделать только инлайном, потому что оно так работает на самой Вакабе. Но если ФБЕ оно мультилайн, то лучше совместимость, да.
No. 1000154  
Справку после этого обновите, господа. Ничего не понятно.
No. 1000162  
1527591043872.webp - (334.25KB, 680×1554)
1000162
>>1000153
> Нет, массив с таким именем.
Не используется, можно спокойно из кода убрать. Для вакабамарков завёл, наверное.

>>1000154
Всё почти также. Основное изменение в том, что тильда (~) теперь символ разметки, который escape-ит другие тэги разметки (*, %%, [u] и так далее). Перед тэгом разметки, тильда может escape-ить сама себя.
  • w~ww~~www~~~ ⟶ w~ww~~www~~~
  • 2~**4==4~**2 ⟶ 2**4==4**2
  • *uwu~~* ⟶ uwu~

Справку напишу, когда формат будет фиксирован. Пока же есть некоторые проблемы.
  1. Сейчас ~ escape-ит именно тэг, не символ, что в случае с %%, ** и ^^ кое-что делает невозможным. Например, невозможно процентами заспоилерить "146%";
  2. В отличие от обычного FBE, что-нибудь типа "****" обработается, на выводе образуя HTML-элементы с пустым содержимым. Не знаю, нужно ли фиксить.

No. 1000163  
> Для вакабамарков завёл, наверное.
И не наверное, а таки именно для них, судя по $ws[$k] = $pattern; в foreach($patterns as $k => $pattern){
No. 1000165  
function BBCode($string){
    $regex = '$(?:^|\G|[^~])\K~*(?:';
    $patterns = [
        "\r\n- " => ['\r\n\- ', '<li>', '</li>', '<ul>', '</ul>'],
        "\r\n* " => ['\r\n\* ', '<li>', '</li>', '<ul>', '</ul>'],
        "\r\n+ " => ['\r\n\+ ', '<li>', '</li>', '<ol>', '</ol>'],
        "\r\n# " => ['\r\n\# ', '<li>', '</li>', '<ol>', '</ol>'],
        '[nofmt]' => ['\[nofmt]|\[\/nofmt]', '', '', '``', '[/nofmt]'],
        '[code]' => ['\[code]|\[\/code]', '<code>', '</code>', '`', '[/code]'],
        '[b]' => ['\[b]|\[\/b]', '<b>', '</b>', '**', '[/b]'],
        '[i]' => ['\[i]|\[\/i]', '<i>', '</i>', '*', '[/i]'],
        '[u]' => ['\[u]|\[\/u]', '<span style="text-decoration: underline;">', '</span>', '', '[/u]'],
        '[s]' => ['\[s]|\[\/s]', '<strike>', '</strike>', '^^', '[/s]'],
        '[aa]' => ['\[aa]|\[\/aa]', '<span style="font-family: Mona,\'MS PGothic\' !important;">', '</span>', '', '[/aa]'],
        '[spoiler]' => ['\[spoiler]|\[\/spoiler]', '<span class="spoiler">', '</span>', '%%', '[/spoiler]'],
        '``' => ['``', '', ''],
        '`' => ['`', '<code>', '</code>'],
        '**' => ['\*\*', '<b>', '</b>'],
        '*' => ['\*', '<i>', '</i>'],
        '%%' =>['%%', '<span class="spoiler">', '</span>'],
        '^^' => ['\^\^', '<strike>', '</strike>'],
    ];
    $bbs = array(); $bb_cl_to_op = array(); $lists = array();
    $bb_to_w = array(); $w_to_bb = array();
    $states = array();
    $in_list = false;
    foreach($patterns as $k => $pattern){
        if($k[0] == '['){
            $bbs[$k] = $pattern;
            $bb_cl_to_op[$pattern[4]] = $k;
            if($pattern[3] != ''){
                $bb_to_w[$k] = $pattern[3];
                $w_to_bb[$pattern[3]] = $k;
            }
        }
        else if($k[0] == "\r")
            $lists[$k] = $pattern;
        $states[$k] = false;
        $regex .= $pattern[0] . '|';
    }
    $regex .= '\r\n)$is';
    $mark_stack = array();
    $result = '';
    // handle when it starts from a list declaration
    if(preg_match('/^~*[\*|\+|\-|\#] /', $string) == 1){
        if($string[0] == '~')
            $string = substr($string, 1);
        else
            $string = "\r\n" . $string;
    }
    $length = strlen($string);
    $parsing_offset = 0;
    $copy_offset = 0;
for($next_parsing_offset = 0; $parsing_offset < $length; $parsing_offset = $next_parsing_offset){
    if(!preg_match($regex, $string, $match, PREG_OFFSET_CAPTURE, $parsing_offset))
        break;
    $match = $match[0];
    $match_length = strlen($match[0]);
    $next_parsing_offset = $match[1] + $match_length;
    $rtilda_pos = strrpos($match[0], '~');
    $mark = $rtilda_pos === false ? $match[0] : substr($match[0], $rtilda_pos + 1);
    // continue if the mark is not applicable in the current context
    if(!$in_list && $mark == "\r\n")
        continue;
    if($states['``'] && $mark != '``' || $states['[nofmt]'] && $mark != '[/nofmt]')
        continue;
    if($states['`'] && $mark != '`' || $states['[code]'] && $mark != '[/code]')
        continue;
    if(array_key_exists($mark, $w_to_bb) && $states[$w_to_bb[$mark]])
        continue;
    if(array_key_exists($mark, $bb_to_w) && $states[$bb_to_w[$mark]])
        continue;
    if(array_key_exists($mark, $bb_cl_to_op) && !$states[$bb_cl_to_op[$mark]])
        continue;
    if(array_key_exists($mark, $bbs) && $states[$mark])
        continue;
    if($in_list && array_key_exists($mark, $lists) && !$states[$mark])
        continue;
    // the mark is applicable, copy whatever was before and half the tildas
    $tilda_len = $rtilda_pos === false ? 0 : $rtilda_pos + 1;
    $to_copy = substr($string, $copy_offset, $match[1] + (int)($tilda_len / 2) - $copy_offset);
    if($states['`'] || $states['[code]'])
        $to_copy = strtr($to_copy, array("\t" => '&nbsp;&nbsp;&nbsp;&nbsp;', ' ' => '&nbsp;'));
    $result .= $to_copy;
    // if the mark is being escaped, set the offsets accordingly and move on
    // continue parsing from the second symbol of the current tag
    if(($tilda_len % 2) === 1){
        $result .= $match[0][$tilda_len];
        $copy_offset = $match[1] + $tilda_len + 1;
        $next_parsing_offset = $match[1] + $tilda_len + 1;
        continue;
    }
    // otherwise, handling the mark as active
    $copy_offset = $match[1] + $match_length;
    // first, handle the list marks, as they may result in both opening and closure
    if(array_key_exists($mark, $lists)){
        if(!$in_list){
            $result .= $lists[$mark][3];
            $in_list = true;
        }
        if($states[$mark]){
            do{
                $c_st = array_pop($mark_stack);
                $result.= $patterns[$c_st][2];
                $states[$c_st] = false;
            } while($c_st != $mark);
        }
        $result .= $lists[$mark][1];
        array_push($mark_stack, $mark);
        $states[$mark] = true;
        continue;
    }
    if($mark == "\r\n"){
        do{
            $c_st = array_pop($mark_stack);
            $result.= $patterns[$c_st][2];
            $states[$c_st] = false;
        } while(!array_key_exists($c_st, $lists));
        $result.= $lists[$c_st][4];
        $in_list = false;
        continue;
    }
    // now, if it is a non-list opening
    if(array_key_exists($mark, $states) && $states[$mark] == false){
        $result .= $patterns[$mark][1];
        $states[$mark] = true;
        array_push($mark_stack, $mark);
        continue;
    }
    // if is's a closure
    $till = array_key_exists($mark, $bb_cl_to_op) ? $bb_cl_to_op[$mark] : $mark;
    do {
        $c_st = array_pop($mark_stack);
        $result.= $patterns[$c_st][2];
        $states[$c_st] = false;
        if(array_key_exists($c_st, $lists)){
            $result.= $patterns[$c_st][4];
            $in_list = false;
            }
    } while($mark_stack && $till != $c_st);
}
    // finalize if needed
    if($copy_offset < $length){
        $to_copy = substr($string, $copy_offset, $length - $copy_offset);
        if($states['`'] || $states['[code]'])
            $to_copy = strtr($to_copy, array("\t" => '&nbsp;&nbsp;&nbsp;&nbsp;', ' ' => '&nbsp;'));
        $result .= $to_copy;
    }
    while($mark_stack){
        $c_st = array_pop($mark_stack);
        $result.= $patterns[$c_st][2];
        $states[$c_st] = false;
        if(array_key_exists($c_st, $lists)){
            $result.= $patterns[$c_st][4];
            $in_list = false;
        }
    }
    return $result;
}

No. 1000166  
^^.webp - (8.79KB, 444×440)
1000166
>>1000165
Собственно, новая версия, где ~ escape'ит только первый символ тэга. То бишь, если перед тэгом поставить тильду, то parse'инг продолжается со второго его символа, если таковой есть. Также добавлены `` и [nofmt] — блоки, где отключается форматирование, чтобы с тильда-escape'ами в сложных случаях не возиться.
No. 1000170  
Добавить раздел "Разметка" в news.php. Форматирование через символ «_» на данный момент не поддерживается. поменять на Более полная информация о разметке находится тут.
mark.html ниже кинуть в inc/pages.

<div class="content">
<h2><div class="newssub">Wakaba-mark</div><div class="permalink">&nbsp;</div></h2>
<table border=1><tr><th>Ввод</th><th>Вывод</th></tr>
<tr><td>**полужирное начертание**</td><td><b>полужирное начертание</b></td></tr>
<tr><td>*курсивное начертание*</td><td><i>курсивное начертание</i></td></tr>
<tr><td>`` (*-*) без форматирования ^^_^^ ``</td><td>`` (*-*) без форматирования ^^_^^ ``</td></tr>
<tr><td>`int i = 2 * 4; \\ код`</td><td><code>int i = 2 * 4;\\ код</code></td></tr>
<tr><td>%%спойлер%%</td><td><span class="spoiler">спойлер</span></td></tr>
<tr><td>^^зачёркивание^^</td><td><s>зачёркивание</s></td></tr>
<tr><td>`` (*-*) без форматирования ^^_^^ ``</td><td>`` (*-*) без форматирования ^^_^^ ``</td></tr>
</table>

<h2><div class="newssub">BBCode</div><div class="permalink">&nbsp;</div></h2>
<table border=1><tr><th>Ввод</th><th>Вывод</th></tr>
<tr><td>[u]подчёркивание[/u]</td><td><span style="text-decoration: underline;">подчёркивание</span></td></tr>
<tr><td>[aa]Mona,'MS PGothic'[/aa]</td><td><span style="font-family: Mona,'MS PGothic' !important;">Mona,'MS PGothic'</span></td></tr>
<tr><td>[b]полужирное начертание[/b]</td><td><b>полужирное начертание</b></td></tr>
<tr><td>[i]курсивное начертание[/i]</td><td><i>курсивное начертание</i></td></tr>
<tr><td>[code]int i = 2 * 4; \\ код[/code]</td><td><code>int i = 2 * 4; \\ код</code></td></tr>
<tr><td>[spoiler]спойлер[/spoiler]</td><td><span class="spoiler">спойлер</span></td></tr>
<tr><td>[s]зачёркивание[/s]</td><td><s>зачёркивание</s></td></tr>
<tr><td>[nofmt]без форматирования ^^_^^ [/nofmt]</td><td>без форматирования ^^_^^ </td></tr>
</table>

<h2><div class="newssub">Cписки</div><div class="permalink">&nbsp;</div></h2>
<table border=1><tr><th>Ввод</th><th>Вывод</th></tr>
<tr><td>- Первый пункт<br>- Второй пункт</td><td><ul><li> Первый пункт</li><li> Второй пункт</li></ul></td></tr>
<tr><td>* Первый пункт<br>* Второй пункт</td><td><ul><li> Первый пункт</li><li> Второй пункт</li></ul></td></tr>
<tr><td>+ Первый элемент<br>+ Второй элемент</td><td><ol><li> Первый элемент</li><li> Второй элемент</li></ol></td></tr>
<tr><td># Первый элемент<br># Второй элемент</td><td><ol><li> Первый элемент</li><li> Второй элемент</li></ol></td></tr>
</table>

<h2><div class="newssub">Escape-символ ~</div><div class="permalink">&nbsp;</div></h2>
<table border=1><tr><th>Ввод</th><th>Вывод</th></tr>
<tr><td>2 ~* 2 = 4</td><td>2 * 2 = 4</td></tr>
<tr><td>uwa~~</td><td>uwa~~</td></tr>
<tr><td>*uwa~~*</td><td><i>uwa~</i></td></tr>
<tr><td>~^^_~^^</td><td>^^_^^</td></tr>
<tr><td>%%146~%%%</td><td><span class="spoiler">146%</span></td></tr>
<tr><td>~**курсив~**</td><td>*<i>курсив*</i></td></tr>
<tr><td>- Первый пункт~ <br>- Тоже первый пункт~<br>Тоже</td>
    <td><ul><li> Первый пункт<br>- Тоже первый пункт<br>Тоже</li></ul></td></tr>
<tr><td>~- Не пункт списка</td>
    <td>- Не пункт списка</td></tr>
</table>

Способ избежать объявления списка, указанный в последней строке, работает только в начале сообщения.

<h2><div class="newssub">Ссылки и цитирование</div><div class="permalink">&nbsp;</div></h2>
<table border=1><tr><th>Ввод</th><th>Вывод</th></tr>
<tr><td>>>180000</td><td><a href="#180000">>>180000</a></td></tr>
<tr><td>>>/b/188888</td><td><a href="#b180000">>>/b/188888</a></td></tr>
<tr><td>>цитата</td><td><blockquote>>цитата</blockquote></td></tr>
<tr><td>
http://example.org</td><td><a href="http://example.org">http://example.org</a></td></tr>
<tr><td>
https://example.org</td><td><a href="https://example.org">https://example.org</a></td></tr>
<tr><td>
ftp://example.org</td><td><a href="ftp://example.org">ftp://example.org</a></td></tr>
</table>


<h2><div class="newssub">Особенности работы</div><div class="permalink">&nbsp;</div></h2>
<table border=1><tr><th>Отправляемое сообщение</th><th>Вывод</th></tr>
<tr><td>2 * 2 = 4, курсив</td><td>2 <i> 2 = 4, курсив</i></td></tr>
<tr><td>[b]*полужирный курсив</td><td><b><i>полужирный курсив</i></b></td></tr>
<tr><td>**[i]полужирный курсив**[/i]</td><td><b><i>[i]полужирный курсив</i></b>[/i]</td></tr>
<tr><td>*[i]курсив[/i]*</td><td><i>[i]курсив[/i]</i></td></tr>
<tr><td>[i][i]курсив*[/i]</td><td><i>[i]курсив*</i></td></tr>
<tr><td>[/i]~[/i]~~[/i]</td><td>[/i]~[/i]~~[/i]</td></tr>
<tr><td>[i]~*~[i]курсив[/i]</td><td><i>~*~[i]курсив</i></td></tr>
</table>

</div><br>

No. 1000171  
>>1000170
Добавлено с изменениями: ":" заменяется на "& #58;" чтобы отключить ссылки в коде/noformat.
No. 1000174  
in.webp - (17.18KB, 886×383)
1000174
>>1000171
Yatta!

BTW, у меня опечатки в markdown.html. Простите
# Там две одинаковых строки "`` (*-*) без форматирования ^^_^^ ``", наверное, стоит оставить последнюю;
# У обеих тех строк в поле столбца "Вывод" слева и справа стоит лишний "``";
# Под заголовком "Особенности работы" в столбце "Вывод" стоит лишний "[i]" в поле [i]полужирный курсив[/i]
No. 1000175  
num_list.webp - (45.43KB, 1870×326)
1000175
>>1000174
> #
Странно. УМВР.
No. 1000178  
>>1000175
Should be fixed. Я убрал часть переменных в continue-проверках.
No. 1000180  
>>1000178
Теперь работает. Проезд тоже оплачивается.

> `` (*-*) без форматирования ^^_^^ ``
У левого и правого "``" стоит пробел. Либо эти пробелы убрать, либо в "Вывод" добавить "&nbsp;". Похожая ситуация с "[/nofmt]".
No. 1000182  
Ну чтож, дополнительные пожелания по капче ещё есть, или в /b/ тоже включать как есть?
No. 1000183  
>>1000182
Включай.
Есть там одна картинка, где дЪвочка совсем далеко изображена сбоку и лица не видать.

Где-то в 2022-ом году в /b/ 410-го был пост в залоченном треде с пожеланиями по фапче. Если грабёр такую метаинформацию сохраняет, о залоченности, можно было бы найти...
Проскроллил тут 14 140 картинок из /b/ 410-го и немного сдался.
No. 1000184  
>>1000183
Могу разве текстопоиск дать.
Закрытость треда можно увидеть только на репарсинге, а граббер его только для автомодерации делает. Можно было бы расширить, да.
No. 1000218  
902214b2b8cb531be419a9f4218def79.jpg - (669.28KB, 1433×1557)
1000218
Сложный вопрос: как называть этот чан. С родителем очень естественно вышло, просто и гениально. А вот тут-то вот вот... This one makes you scratch your head.
No. 1000220  
>>1000218
Если подходить совсем формально, то если родитель ойчан, то мы ойчи-чан.
No. 1000221  
У меня иногда Animapcha image вместо самой анимаптчи.
No. 1000222  
Длину имён файлов, слишком малую, тоже наконец пофиксить бы.

>>1000221
Хм, тоже замечено. Думалось что прокси на этойстороне виноват, но может там файлик битый.
No. 1000227  
>>1000221
То были временные файлы от редактирования текстовых. Вроде починено.

>>1000222
Не будет ли слишком некрасиво совсем без обрезания?
No. 1000229  
>>1000227
Ну, попробуем. На время миграции БД постить в разделе не получится правда.
No. 1000230  
>>1000229
Как-то так.
No. 1000232  
vichan.webp - (93.58KB, 707×380)
1000232
>>1000227
Наверное, будет полезно, если имя файла с кадром, скажем,
[SubsPlease] Maougun Saikyou no Majutsushi wa Ningen datta - 01 (1080p) [F17D1F04] 00:17:04.900.webp
Будет входить вместе с номером эпизода и временной меткой.

Можно сделать, увеличив предел, по которому ведётся обрезка. Можно сделать, вырезая часть имени файла из середины, оставив limit прежним. Можно сделать, чтобы по наведению курсора на имя файла, оно показывалось чуть ниже полностью, как на vichan-е.

Также стоит сделать обрезание через mb_strlen и, соответственно, поменять тип поля в базе, если уже не сделано.

Судя по >>1000230, всё-таки лучше делать отображаемое имя ограниченным по длине.
No. 1000235  
>>1000232
Подкрутил на стороне рендера.

Раз уж мы тут, мне очень удобным кажется функционал скачивания с оригинальным именем файла. Я мог бы это к текущей ссылке-имени прикрепить, но наверное лучше отдельной иконкой как у 4chanX?
No. 1000236  
>>1000235
Лучше отдельной иконкой, мне кажется.
No. 1000239  
>>1000184
Там, наверное, встречается case-insensitive подстрока хинат. Есть ли такие посты?
No. 1000240  
>>1000239
Только в АКБ-треде: https://410.yakuji.moe/b/res/107994.html#161346
No. 1000241  
>>1000240
Спасибо за содействие! ЭхЪ. А ОП-посты со словом капч/фапч, например?
No. 1000242  
>>1000241
https://410.yakuji.moe/b/res/201935.html
https://410.yakuji.moe/b/res/195616.html (тред какого-то перебежчика, нюкнут после второго поста)
https://410.yakuji.moe/b/res/181293.html
No. 1000243  
>>1000242
https://410.yakuji.moe/b/res/195616.html 404 отдаёт.
Ладно, спасибо за содействие. Может быть, он банально был вне периода работы архива.
No. 1000246  
faptcha_php.png - (12.08KB, 90×50)
1000246
>Sorry, your message is too long. Message length: 18258, maximum allowed length: 16384
No. 1000247  
>>1000246
А какой лимит хотели бы видеть лично Вы?
Так-то уже в два раза больше обычного, емнип.
Удалить сообщение []
Пароль  
[Mod]