تابع utf8SubString , گرفتن بخشی از رشته با یونیکد UTF8

۷ سال پیش(به روز شده در ۵ سال پیش) پی اچ پی(PHP)(توابع) ۰

تابع معمولی substr در php برای رشته های یونیکدی جواب نمی دهد. در واقع در رشته های یونیکد دار هر حرف از ترکیب سه یا چهار حرف اسکی که کد اسکی آنها بیشتر از 127 است تشکیل شده است. لذا نیاز است تا برای اینکار راه دیگری را برگزید. بهترین راه و ساده ترین راه استفاده از تابع mb_substr است که مزیت آن نسبت به دیگر توابع امکان مشخص کردن نوع چارست یا یونیکد است. بعنوان مثال:

echo substr('وی2', 0, 1); //out = �
echo mb_substr('وی2', 0, 1, 'utf8'); //out = و

اما تابع ما مختص رشته های با یونیکد utf8 می باشد که به این صورت است:

function utf8SubString($str, $from, $len)
{
    return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,' . $from . '}' .
        '((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,' . $len . '}).*#s', '$1', $str);
}

echo utf8SubString('وی2', 0, 1); //out = و

منبع: php.net

برچسبها

هیچ برچسبی موجود نیست.

صفحات پیشنهادی

بررسی صحت ایمیل از نظر ساختار...

با توجه به کد زیر اگر ایمیل از لحاظ ساختار صحیح باشد مقدار True و در غیر این صورت مقدار False را بر می گرداند. به ساختار خوب توجه کنید! function valid_email($email) { return preg_match('/^([a-z...

دسترسی به مقادیر آرایه بصورت کلیدهای غیر عددی با شماره کلید(گسترش تابع array slice)...

در آرایه هایی که کلیدهای آن غیر عددی است گرفتن مقادیر آن به صورت عددی اشتباه است یعنی......

تابع ()mysql_data_seek در php...

در PHP بارها پیش می آید بعد از کوئری SELECT از تابع ()mysql_fetch_assoc یا تابع ()mysql_fetch_array استفاده کنید......

ایجاد دایرکتوری در صورت نبود آن...

تابع زیر در صورت نبود دایرکتوری آنرا ایجاد می‌نماید. function createDir( $dir ) { if ( !is_dir( $dir ) ) { mkdir( $dir, 0777 ); return true; } return false; }...

نظر

نظری ثبت نشده است.