[How To] Или как да си решим проблема с въпросителния ромб - � - &#65533 ;

ktomov

Premium
Здравейте!
От доста време си мислех да започна една серия от отговори на популярни проблеми с които всеки се сблъсква, а аз доста пъти, за да спестя проблемите на всички останали. Е имам домейн, но ме мързи (признавам си), да направя собствен блог, та мисля, ще бъде от полза на форума да има 3-4-10 теми в които да се дават решения на най-наболелите проблеми.
Та наскоро ми се случи, един потребител от форума да ми зададе въпрос за символа упоменат в заглавието на темата. Е не е проблем с кирилицата, проблема е в кодировката. Решението е много лесно и се върши за точно едноминутна операция. Основния проблем винаги идва от базата данни и от функцията която смуче от тази база данни. Проблема идва от този символ - �, който не знам как да начертая тук - беше ромб със удивителен или въпросителен знак в него.
Решението е лесно. В повечето случеи се получава от вградена функция в самата тема, която "подкастря" текста, за да се извади така наречения excerpt. Не, че нещо лошо, ама повечето теми се пишат за англоезичните държавици, към които явно ние не спадаме. На кратко имаме доста голям текст, от който ни трябват да речем 200 символа - е ако е ascii, окей, ама като е утф?
Решението е просто - отваряте файла functions.php (който в доста теми присъства) и променяте substr в mb_substr. Ако във вашата тема не присъства подобен файл, то функцията е заложена в темплейта, т.е. отваряте си index.php, archive.php, page.php и single.php. Разликата е в това, че първата функция ви сече стринговете без да я интересува, че вие пишете на кирилца, а втората ползва multi byte. Това е решение на 99% от проблемите създадени от "автоматичните" excerpts.
За мен винаги по-удачното решение е било да заместя това запитване (т.е. тази функция) със <?php the_excerpt(); ?> но това си е до мързел и до желание :)
Дано това ви е помогнало, утре още!

П.П. Отдавам заслуженото уважение към DR_GIGGULS. Беше писал (сигурно в неговия блог) за това нещо, но се оказа че той е блокиран от хостера му. Темата е написана, защото имаше колега от форума, който имаше такъв проблем и реших, че трябва да се напише едно подобно решение, което малко или много да се вижда тук - поне от заинтересованите.
 
Последно редактирано:

Горе