Mohsen Hassanshahi
6 سال پیش توسط Mohsen Hassanshahi مطرح شد
9 پاسخ

جایگزین کردن حروف فارسی با عربی

با سلام و وقت بخیر
می خوام تمام درخواست های که به دیتابیس ارسال میشه، اول حروف فارسی با حروف عربی (مثل ي => ی) جایگزین بشه.
لطفا رانمایی بفرمایید


ثبت پرسش جدید
امیر اردکانی
تخصص : طراح و برنامه نویس وب
@AmirArdakani 6 سال پیش مطرح شد
0

سلام
از پکیج زیر استفاده کنید :
ویراستار


Mohsen Hassanshahi
تخصص : برنامه نویس
@a.hassanshahi74 6 سال پیش مطرح شد
1

ممنون ولی برای خود لاراول می خوام، چون پروژه بزرگ هست، نمی خوایم کار های این شکلی رو سمت کاربر انجام بدیم.
@AmirArdakani


Mohsen Hassanshahi
تخصص : برنامه نویس
@a.hassanshahi74 6 سال پیش مطرح شد
1

شما راهنمایی ندارید؟؟
@ali.bayat
@hesammousavi


سید سعید حسینی
تخصص : برنامه نویس
@saeedhosseini 6 سال پیش مطرح شد
1

میتونید از فانکشن زیر بصورت لوکال یا گلوبال استفاده کنید:

   function persianToArabic($string)
    {
        $persian = ['ی'];
        $arabic = ['ي'];
        return str_replace($persian,$arabic,$string);
    }

Mohsen Hassanshahi
تخصص : برنامه نویس
@a.hassanshahi74 6 سال پیش مطرح شد
1

@saeedhosseiinii
ممنون ولی این هم بدرد ما نمی خوره


Mohsen Hassanshahi
تخصص : برنامه نویس
@a.hassanshahi74 6 سال پیش مطرح شد
1

واقعا کسی راه حرفه ای سراغ نداره؟؟؟؟؟؟؟


سهیل
@soheilyou 4 سال پیش مطرح شد
2
    function convertArabicStringToPersian($string)
    {
        $arabic = array('ي', 'ك', 'ة');
        $farsi = array('ی', 'ک', 'ه');
        return str_replace($arabic, $farsi, $string);
    }
    function toPersianDigit($string)
    {
        $en_num = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
        $fa_num = array('۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹');
        return str_replace($en_num, $fa_num, $string);
    }
    function toEnglishDigit($string)
    {
        $en_num = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
        $fa_num = array('۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹');
        return str_replace($fa_num, $en_num, $string);
    }

Sahandi81
تخصص : PHP - Laravel -JS
@sahandi81 3 سال پیش آپدیت شد
0

سلام
همچین مشکلی رو داشتم راه حل آماده ایی پیدا نکردم پس یکی براش ساختم.
EDIT
برای جلوگیری از ورود دوستان راه حل دادن.
برای جایگذاری داخل دیتابیس mysql بدردتون میخوره
یا راهی خواهم یافت یا راهی خواهم ساخت :)
Laravel : 8
PHP : 7.4

web.php :

Route::get('rebuild',           [RebuildDatabaseController::class, 'getTables']);

Code :

namespace App\Http\Controllers;

use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;

class RebuildDatabaseController extends Controller
{

    public function getTables()
    {
        # DB Name
        $databaseName = DB::connection()->getDatabaseName();
        # Tables
        $tables = DB::select('SHOW TABLES');

        try {
            # u can remove it. just for show tables
            echo '';
            foreach($tables as $table)
            {
                $tableName  = ($table->{'Tables_in_' . $databaseName});
                $columns    = Schema::getColumnListing($tableName);
                echo $tableName .' '. '[' . "\n";
                foreach ($columns as $column) {
                    echo "\t" . $column . "\n";
                    DB::select("update $tableName set $tableName.$column=REPLACE($tableName.$column,'ي',N'ی')");
                    DB::select("update $tableName set $tableName.$column=REPLACE($tableName.$column,'ك',N'ک')");
                    DB::select("update $tableName set $tableName.$column=REPLACE($tableName.$column,'ة',N'ه')");
                }
                echo ']' . "\n";
            }
            return response(['status' => true]);

        } catch (\PDOException $exception){

            return response([
                'status'    => false,
                # remove this lines after release
                'line'      => $exception->getLine(),
                'file'      => $exception->getFile(),
                'msg'       => $exception->getMessage(),
            ]);
        }
    }

}

محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 3 سال پیش مطرح شد
1

من معمولا از یک global helper funciton به شکل زیر استفاده می‌کنم:

function to_fa_letter($string) {
    $arabic_letters = ['ي', 'ك', 'ؤ', 'ۀ'];
    $persian_letters = ['ی', 'ک', 'و', 'ه'];
    return str_replace($arabic_letters, $persian_letters, $string);
}

و بعد مثلا موقع ذخیره و آپدیت یک فیلد در دیتابیس به این شکل ازش استفاده می‌کنم:

$user->name = to_fa_letter($request->name);
$user->save();

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام