Tenir pisze: ↑29 lis 2023, 15:37
Helwetyk Romański pisze: ↑28 lis 2023, 23:17
Mnie, przyznaję, czysto akademicko temat kusi. Nawet bym usiadł do Excela, ale — na szczęście dla mojego czasu — nie potrafię bezboleśnie obliczyć średniej objętości wypowiedzi na phpBB (z wyłączeniem cytatów i BBCode’u) tak, żeby w ogóle przyjąć tutaj jakąś normę i zestawiać porównywalne wartości liczbowe.
Podaje ilość znaków bez cytatów, ale liczba jest zakłamana o małą wartość wynikającą z faktu że php jest tak ułomne że nie potrafi policzyć nawet dobrze znaków.
np.
Długość wiadomości podaje jako 477 a naprawde jest to 443.
Kod: Zaznacz cały
<?php
$str = "[quote=\"Helwetyk Romański\" post_id=46568 time=1701209869 user_id=2]Mnie, przyznaję, czysto akademicko temat kusi. Nawet bym usiadł do Excela, ale — na szczęście dla mojego czasu — nie potrafię bezboleśnie obliczyć średniej objętości wypowiedzi na phpBB (z wyłączeniem cytatów i BBCode’u) tak, żeby w ogóle przyjąć tutaj jakąś normę i zestawiać porównywalne wartości liczbowe.[/quote] Oto kod w php który podaje długość wiadomości bez Cytatów";
print_r("Wiadomość: ".$str."\n");
print_r("Długość wiadomości z cytatami: ".strlen($str)."\n");
preg_match_all('/\[quote=[\s\S]*\[\/quote]/', $str, $quotes);
print_r("Cytaty:\n");
print_r($quotes);
$quotesCount = count($quotes, COUNT_NORMAL);
$quoteLength = 0;
for ($i = 0; $i < $quotesCount; $i++) {
$quoteLength += strlen(implode($quotes[$i]));
}
print_r("Długość cytatów: ".$quoteLength."\n");
$messageLength = strlen($str) - $quoteLength;
print_r("Długość wiadomości bez cytatów: ".$messageLength."\n");
?>
Może warto używać odpowiedniej funkcji do liczenia znaków?
Proponuję funkcje, która ma możliwość ustawienia kodowania znaków, jak wiemy w angielskim nie ma naszych znaków specjalnych ą,ę, etc..
mb_strlen($string, "UTF-8");
Ta funkcja zwraca 441 znaków 👌🏻
Warto nadmienić, że istnieją inne BBCode, które też nie powinny być liczone jako znaki: pogrubienia, kursywą, obrazki...