راکت

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

9 پاسخ

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

ثبت پرسش جدید

پاسخ‌ها

9
امیر اردکانی
امیر اردکانی
@AmirArdakani

تخصص: طراح و برنامه نویس وب

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

Mohsen Hassanshahi
Mohsen Hassanshahi
@a.hassanshahi74

تخصص: برنامه نویس

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

شاید پاسخ شما همین‌جا باشد

Mohsen Hassanshahi
Mohsen Hassanshahi
@a.hassanshahi74

تخصص: برنامه نویس

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

سید سعید حسینی
سید سعید حسینی
@saeedhosseini

تخصص: برنامه نویس

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

   function persianToArabic($string)
    {
        $persian = ['ی'];
        $arabic = ['ي'];
        return str_replace($persian,$arabic,$string);
    }
Mohsen Hassanshahi
Mohsen Hassanshahi
@a.hassanshahi74

تخصص: برنامه نویس

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

Mohsen Hassanshahi
Mohsen Hassanshahi
@a.hassanshahi74

تخصص: برنامه نویس

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

سهیل
سهیل
@soheilyou
    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
Sahandi81
@sahandi81

تخصص: PHP - Laravel -JS

سلام
همچین مشکلی رو داشتم راه حل آماده ایی پیدا نکردم پس یکی براش ساختم.
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(),
            ]);
        }
    }

}
محمدحسن یگانه
محمدحسن یگانه
@mhyeganeh

تخصص: Full-Stack Web Developer Freelancer

من معمولا از یک 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();

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

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