The Arcive of Official vBulletin Modifications Site.It is not a VB3 engine, just a parsed copy! |
|
#1
|
||||
|
||||
substr is BAD! fetch_trimmed_title is GOOD!
A little note for all coders.
I was inspecting MOD: Cyb - Advanced Forum Statistics https://vborg.vbsupport.ru/showthread.php?t=122986 And saw that php's substr(); function is used there. For example: PHP Code:
You have to use fetch_trimmed_title(); function which is built-in vbulletin. You asked why? 1-st, VB's uses this function to cut thread titles. 2-nd, most forum uses UTF8. For example Russian letter in UTF-8 will look like: PHP Code:
So when you type some word in Russian which consists of 5 letter it will look like: PHP Code:
And in this way it is storied in databse. So it it 30 symbols if you count. When you use substr(); function you cut by symbols and not by letters! So if you set to with substr(); function to cut after 27 letter and you will cut the example above you will get: PHP Code:
And when this one will be displayed on the webpage you will see a bug. That is why you have to use fetch_trimmed_title(); function. As it cuts only whole words. fetch_trimmed_title() relies on spaces when cutting. If me return to Cyb - Advanced Forum Statistics https://vborg.vbsupport.ru/showthread.php?t=122986 in all code I replaced lines like: PHP Code:
PHP Code:
functions.php PHP Code:
|
#2
|
|||
|
|||
Quote:
In UTF8 any character in the Unicode standard, yet the initial encoding of byte codes and character assignments for UTF-8 is backwards compatible with ASCII. So, dependency of character it may be represent from 1 (first 127 characters ASCII) to 4 bytes. Russian Cyrillic characters in UTF-8 represents by 2 byte per character. Your example is strange, and I can't represent it on my system. I'm guess what you meant HTML mnemonic entities, but in this case mnemonic must look like PHP Code:
PHP Code:
On my board on UTF-8 with database collation utf8_general_ci I'm haven't this troubles - all Russian and many more characters saved as is, without similar transformation. Quote:
So, if you wish cut by characters, you just may use multibyte functions like mb_substr() (which comes from mbstring extension) or iconv_substr() (this is from "more standard" and widely distributed iconv). So, if none of this extension available, in multibyte strings, you may safely emulate substr by regular expression on this manner: PHP Code:
Or, for clarity, you may wrap it in function, if wish: PHP Code:
|
#3
|
||||
|
||||
Quote:
PHP Code:
Try to post something like: PHP Code:
You will get this one: PHP Code:
|
#4
|
|||
|
|||
With VBB 3.7 , Has it effect ?
|
#5
|
||||
|
||||
This post will apply regardless of vBulletin version - it will apply as long the the substr() function behaves like it currently does.
|
Thread Tools | |
Display Modes | |
|
|
X vBulletin 3.8.12 by vBS Debug Information | |
---|---|
|
|
More Information | |
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|