PDA

View Full Version : مشکل با جستجو کلمات عربی



NIMA_1981
سه شنبه 08 بهمن 1392, 16:37 عصر
سلام دوستان

من میخوام از فایل متن قران یک کلمه را جستجو کنم میشه راهنمایی بفرمایید که باید جطوری این کارو انچام بدم

من میخوام مثلا اگر کلمه فجر را جستجو میکنم هر کلمهای که داخلش فجر هست را نشون بده

فَانفَجَرَ‌تْ

يَتَفَجَّرُ‌

الْفَجْرِ‌

با تشکر

MMSHFE
سه شنبه 08 بهمن 1392, 19:09 عصر
ابتدا کارکترهای اعراب رو از متن جستجوی کاربر حذف کنید و بعد، از فیلد توی دیتابیس هم این کارکترها رو حذف کنید و با عملگر LIKE جستجو رو انجام بدین.

NIMA_1981
سه شنبه 08 بهمن 1392, 21:07 عصر
میشه بگید چطوری اعراب رو حذف کنم

Yashar1989
سه شنبه 08 بهمن 1392, 22:13 عصر
با preg_replace میتونی حذف کنی

Yashar1989
سه شنبه 08 بهمن 1392, 22:43 عصر
بیا این هم کدش:

<?php

$string = "سَلامُ";
$patterns = array (
'(\x{d9}\x{8e})' // Fathe
, '(\x{d9}\x{8b})' // Tanvin Fathe
, '(\x{d9}\x{8f})' // Damma
, '(\x{d9}\x{8c})' // Tanvin Damma
, '(\x{d9}\x{90})' // Kasre
, '(\x{d9}\x{8d})' // Tanvin Kasre
, '(\x{d9}\x{91})' // Tashdid
, '(\x{d9}\x{92})' // Sokoun
, '(\x{d9}\x{93})' // Madh
, '(\x{d9}\x{94})' // Hamze Bala
, '(\x{d9}\x{95})' ); // Hamze Paeen
$string = preg_replace($patterns,'',$string);

echo "$string";
?>
نحوه کارکردش هم معلومه
حرکتهای پرکاربرد رو اضافه کردم
اگر میخوای حرکتهای دیگه رو اضافه کنی به لینک زیر برو:
http://www.utf8-chartable.de/unicode-utf8-table.pl
از منوی کشویی گزینه U+0600 Arabic رو انتخاب کن
مثلا کد فتحه

\xd9\x8e
هست که توی تبدیل باید بنویسی

\x{d9}\x{8e}

NIMA_1981
سه شنبه 08 بهمن 1392, 23:36 عصر
الان اعراب خدف شد چطوری باید از LIKE استفاده کنم

shahriyar3
سه شنبه 08 بهمن 1392, 23:48 عصر
الان اعراب خدف شد چطوری باید از LIKE استفاده کنم


SELECT * FROM `tbl` WHERE `field` LIKE '%value%'

NIMA_1981
سه شنبه 08 بهمن 1392, 23:57 عصر
من از یک فایل txt استفاده میکنیم این دستورات مکه برای بانک اطلاعاتی نیست

shahriyar3
چهارشنبه 09 بهمن 1392, 00:14 صبح
من از یک فایل txt استفاده میکنیم این دستورات مکه برای بانک اطلاعاتی نیست
من فکر کردم توی دیتابیس ذخیره کردید
تو فایل دستور لایک نداریم باید کل متن و بخونید توسط کاراکتر های جدا کننده جدا کنید یا با دستور similar_text یا دستور های مشابه کلمه مورد نظرتون و پیدا کنید

NIMA_1981
چهارشنبه 09 بهمن 1392, 10:15 صبح
میشه راهنمایی کنید برای حستحوی متن عربی یا فارسی از فایل متنی باید چه کاری انجام بدم من اینو کد را پیدا کردم اما نمیدونم باید جطوری ازش استفاده کنم

preg_match("/[\x{0600}-\x{06FF}\x]{1,32}/u", 'فارسی');

Yashar1989
چهارشنبه 09 بهمن 1392, 10:22 صبح
میشه راهنمایی کنید برای حستحوی متن عربی یا فارسی از فایل متنی باید چه کاری انجام بدم من اینو کد را پیدا کردم اما نمیدونم باید جطوری ازش استفاده کنم

preg_match("/[\x{0600}-\x{06FF}\x]{1,32}/u", 'فارسی');


باید توسط file_get_contens محتوای فایل رو توی یه متغیر بریزی بعد اون متغیر رو داخل preg_match بزاری
arabictext.txt نام فایلی هست که محتوای عربی داخلش هست

<?php

$string = file_get_contents("arabictext.txt");
$patterns = array (
'(\x{d9}\x{8e})' // Fathe
, '(\x{d9}\x{8b})' // Tanvin Fathe
, '(\x{d9}\x{8f})' // Damma
, '(\x{d9}\x{8c})' // Tanvin Damma
, '(\x{d9}\x{90})' // Kasre
, '(\x{d9}\x{8d})' // Tanvin Kasre
, '(\x{d9}\x{91})' // Tashdid
, '(\x{d9}\x{92})' // Sokoun
, '(\x{d9}\x{93})' // Madh
, '(\x{d9}\x{94})' // Hamze Bala
, '(\x{d9}\x{95})' ); // Hamze Paeen
$string = preg_replace($patterns,'',$string);

echo "$string";
?>

NIMA_1981
چهارشنبه 09 بهمن 1392, 11:02 صبح
کلمه ای که باید جستجو بشه را کجا وارد کنم

NIMA_1981
پنج شنبه 10 بهمن 1392, 08:49 صبح
دوستان کسی نیمتونه راهنمایی کنه