PDA

View Full Version : سوال: مشکل در دریافت ادرس های فارسی در سایت های مختلف



alirezakamali
جمعه 08 آبان 1394, 00:18 صبح
با سلام
من دارم یک سیستم جستجو مینویسم
در این مرحله که ربات میره و لینک ها رو از تگ a میگیره و میاره و مشکلی نیست
اما مشکل از اینجاست که تقریبا تمامی سایت ها ( مثل خود این انجمن ) از ادرس های فارسی استفاده میکنند . البته این خود مشکل نیست بلکه انواع اقسام مختلفی که سایت ها کلمات فارسی رو میزارند مشکل پیش میاد ، نمونه هایی که در زیر میزارم رو توجه کنید ::




امکانات-حذفی-در-رزبلاگ-آپدیت-انجمن-ها

A7%DB%8C-%D8%B3%D8%A7%DB%8C%D8%AA-%D9%87%D8%A7

سلام



این سه نوع هستش که نوع سوم مشکلی نداره ولی 2 نوع اول
حالا من اگه یکی رو هم توسط تگهای زیر مثلا encode کنم باز در سایت های دیگه مشکل برای مدل های دیگه پیش میاد

کدهایی که باهاش encode کردم و تست کردم :



urldecode
urlencode
utf8_decode
utf8_encode



تقریبا تمام 4 کد فوق رو همه مدله تست کردم و اگر برای نمونه اولی دست کار کنه بعدا توی یک سایت دیگه که نمونه دوم استفاده شده مشکل پیش میاد !

ممنون میشم کمکم کنید 2 روزه کل نت رو گشتم چیزی پیدا نکردم.

alirezakamali
جمعه 08 آبان 1394, 00:24 صبح
مثلا ادرس همین صفحه رو با 2 نسخه ببینید :



http://barnamenevis.org/showthread.php?511245-%D9%85%D8%B4%DA%A9%D9%84-%D8%AF%D8%B1-%D8%AF%D8%B1%DB%8C%D8%A7%D9%81%D8%AA-%D8%A7%D8%AF%D8%B1%D8%B3-%D9%87%D8%A7%DB%8C-%D9%81%D8%A7%D8%B1%D8%B3%DB%8C-%D8%AF%D8%B1-%D8%B3%D8%A7%DB%8C%D8%AA-%D9%87%D8%A7%DB%8C-%D9%85%D8%AE%D8%AA%D9%84%D9%81


http://barnamenevis.org/showthread.php?511245-مشکل-در-دریافت-ادرس-های-فارسی-در-سایت-های-مختلف

Unique
جمعه 08 آبان 1394, 01:39 صبح
شما باید خودتون تشخیص بدین ،‌با regexp میشه بررسی کرد urlencoded شده ، نشده و اگه نشده حروف unicode داره یا نه ! خلاصه چیز خاصی نیست و باید خود لینک را بررسی کنی و تبدیل کنید به اون چیزی که میخواین. راستی تا اونجا که میدونم مدتی هست که محتوای لینک حتی برای گوگل هم بی اهمیته ،‌یعنی شما باید صفحه را درست Index کنید و اهمیتی نداره url را بررسی کنید و کافیه به یک صفحه لینک بشه ،‌همین.

alirezakamali
جمعه 08 آبان 1394, 10:13 صبح
سپاس از پاسختون
باید به اطلاعتون برسونم منم نمیخام لینک ها و ادرس ها رو بررسی کنم
میخام اونا رو به صورت استاندارد در دیتابیس ذخیر کنم
ولی همون طور گفتم 3 نوع ادرس هستش که من با هر کدی اون رو encode کنم شاید درست بشه ولی در مدل های دیگه باز مشکل پیش میاد
من میخام ادرس ها رو توی دیتابیس ذخیر کنم نه این که بررسی کنم ببینم چی توی ادرس نوشته شده
اگر راه حل مناسبی میدونید حتما بگید ممنون میشم

djtrex
جمعه 08 آبان 1394, 14:38 عصر
سپاس از پاسختون
باید به اطلاعتون برسونم منم نمیخام لینک ها و ادرس ها رو بررسی کنم
میخام اونا رو به صورت استاندارد در دیتابیس ذخیر کنم
ولی همون طور گفتم 3 نوع ادرس هستش که من با هر کدی اون رو encode کنم شاید درست بشه ولی در مدل های دیگه باز مشکل پیش میاد
من میخام ادرس ها رو توی دیتابیس ذخیر کنم نه این که بررسی کنم ببینم چی توی ادرس نوشته شده
اگر راه حل مناسبی میدونید حتما بگید ممنون میشم

نیاز شما اینه که فقط اونو به یه فرم استاندارد تبدیل کنید. اینکه فارسی رو چه جوری نشون بده مهم نیست فقط مهم اینه همه لینک ها به صورت یک پارچه و نرمال سازی شده باشه؟ (این چیزی که من برداشت کردم البته!)

اول از همه اینکه یه RFC هست برای اینکار RFC3986:
https://tools.ietf.org/html/rfc3986

پکیج/کتابخانه‌های زیر هم لینک های شمارو براتون نرمال سازی میکنه و به فرمت همون RFC تبدیل میکنه:
http://url.thephpleague.com/
http://sabre.io/uri/
https://github.com/glenscott/url-normalizer
و ...