سایر تابعها رو تمرین کردم اما متوجه شدم خیلیها برای رشته فارسی کار نمیکنه و علامت سوال خروجی میده. در جستجوی قبل تابع _mb گذاشته بشه هم کار نمیکنه. راه حلی داره؟
سپاس از شما
درود
دقیقا میخواید چیکار کنید که علامت سوال برمیگدونه؟ لطفا مطرح کنید تا بهتون کمک کنم، اگه کدتون هست کدتون رو قرار بدید
بهترین پاسخ
امیر صالحی۲۳ شهریور ۱۴۰۰، ۱۶:۲۸
یکی از توابع که با کاراکتر فارسی مشکل داره رو میگذارم. منظورم اینه که همه توابع کار با رشته رو برای رشتههای فارسی قابل استفاده نیست؟ من یکی یکی این توابع رو امتحان کردم چند تاش وقتی رشته فارسی باشه درست خروجی نمیده اما با کاراکتر انگلیسی درست کار میکنه. https://www.javatpoint.com/php-string-functions
$chunkFunc = "این یک تابع دیگر است";
echo $chunkFunc.' : ' .chunk_split($chunkFunc, 4, "....");
خروجی
این یک تابع دیگر است : ای....ن �....�ک ....تا....بع.... د�....�گ�....� ا....ست....
محسن قربانی۲۳ شهریور ۱۴۰۰، ۱۶:۴۴
سلام.
زبان فارسی جزو زبانهای مالتی بایت هست. و باید واسه کار با زبانهایی که utf-۸ هستن از توابع mb_ استفاده کنی.
توابع بدون mb_ هر کارکترو یک بایت در نظر میگیرن. مثلا strlen رو داخلش یه استرینگ فارسی بذار میبینی طول دوبرابر میده.
یه ماژول mbstring روی پی اچ پی نصب شده که میتونی توابع mb_ رو ازین لینک ببینی:
در حال حاضر روی هسته پی اچ پی برای تابع chunk_split تابع mb وجود نداره. و باید خودتون این تابع رو تولید کنید مثلا از تابع mb_str_split میتونید واسه تولید استفاده کنید، البته ارایه برمیگردونه.