Quote:
Originally Posted by Makc666
For example Russian letter in UTF-8 will look like: So when you type some word in Russian which consists of 5 letter it will look like:
PHP Code:
&_236;&_236;&_236;&_236;&_246;
|
Excuse me, where it look like this?
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
not like
Quote:
Originally Posted by Makc666
And in this way it is storied in databse.
|
If my guess about html-entities is true, this behaviour you get only with mismatching used character encodings. For example, on vbulletin board you use UTF8 character encoding, but stores information in database (or tables, or may by only row) with another, single-byte charset, for example windows-1251 (CP1251, microsoft-1251). In this case, this transformation made by browser, to allow store characters, which are not be acceptable by form (if charsets correctly provided in HTML-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:
Originally Posted by Makc666
When you use substr(); function you cut by symbols and not by letters!
|
So, about HTML-entities I'm wrote above. But we still has problem on not ASCII characters, which are be represent more then 1 byte per character. PHP function substr() do not handle
characters (or
symbols if you wish), it is truncate string by amount of
bytes (keep in mind it is same in ASCII)!
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:
$getstats_starter['username'] = preg_replace('#(.{0,' . (int)$trimusername . '}.*?)[^\pL].*#u', '\\1', $getstats_starter['username']);
That's all!! You don't need bulky functions!
Or, for clarity, you may wrap it in function, if wish:
PHP Code:
function pcre_trim ($title, $chars = 70){
return preg_replace('#(.{0,' . (int)$chars . '}.*?)[^\pL].*#u', '\\1', $title);
}
//Anywhere after, use it:
$getstats_starter['username'] = pcre_trim($getstats_starter['username'], $trimusername);