با سلام و وقت بخیر
می خوام تمام درخواست های که به دیتابیس ارسال میشه، اول حروف فارسی با حروف عربی (مثل ي => ی) جایگزین بشه.
لطفا رانمایی بفرمایید
سلام
از پکیج زیر استفاده کنید :
ویراستار
ممنون ولی برای خود لاراول می خوام، چون پروژه بزرگ هست، نمی خوایم کار های این شکلی رو سمت کاربر انجام بدیم.
@AmirArdakani
شاید پاسخ شما همینجا باشد
شما راهنمایی ندارید؟؟
@ali.bayat
@hesammousavi
@saeedhosseiinii
ممنون ولی این هم بدرد ما نمی خوره
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);
}سلام
همچین مشکلی رو داشتم راه حل آماده ایی پیدا نکردم پس یکی براش ساختم.
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(),
]);
}
}
}
من معمولا از یک 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();