كار با رشته هاي فارسي در php

iran-TEC

Member
با سلام خدمت اساتيد محترم php

در برنامه php ام وقتي رشته فارسي را در يك متغير ذخيره مي كنم و قصد نمايش آن را در مرورگر IE دارم به صورت مستطيل نمايش مي دهد و وقتي unicode را از حالت utf-8 به windows-1256 تنظيم مي كنم متن درست مي شود
و همچنين وقتي سورس يك سايت را از راه دور مي خوانم (با استفاده از curl ) وقتي قصد نمايش كاراكتر به كاراكتر محتويات فارسي سايت را دارم با همين مشكل مواجه مي شود و با تنظيم بر روي windows-1256 نيز مشكل حل نميشود البته براي سايت هايي كه charset را بر روي windows-1256 تنظيم كرده اند اين مشكل وجود ندارد .

لطفا اينجانب را در حل اين مشكل ياري كنيد

با تشكر از تمامي دوستان :rose:
 

ziXet

مدیر انجمن PHP/MYSQL
با سلام خدمت اساتيد محترم php

در برنامه php ام وقتي رشته فارسي را در يك متغير ذخيره مي كنم و قصد نمايش آن را در مرورگر IE دارم به صورت مستطيل نمايش مي دهد و وقتي unicode را از حالت utf-8 به windows-1256 تنظيم مي كنم متن درست مي شود
و همچنين وقتي سورس يك سايت را از راه دور مي خوانم (با استفاده از curl ) وقتي قصد نمايش كاراكتر به كاراكتر محتويات فارسي سايت را دارم با همين مشكل مواجه مي شود و با تنظيم بر روي windows-1256 نيز مشكل حل نميشود البته براي سايت هايي كه charset را بر روي windows-1256 تنظيم كرده اند اين مشكل وجود ندارد .

لطفا اينجانب را در حل اين مشكل ياري كنيد

با تشكر از تمامي دوستان :rose:
ببین باید حتما با utf-8 ذخیره بشه و هدر هم باید اینجور ست بشه:
کد:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 

iran-TEC

Member
منظورتون از ذخيره با utf-8 چيه ؟
هدر سايت را با include كردن يك فايل html با محتويات زير روي utf-8 تنظيم كردم ولي درست نشد.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
<title>Untitled Document</title>
</head>
<body>
 

ziXet

مدیر انجمن PHP/MYSQL
منظورتون از ذخيره با utf-8 چيه ؟
هدر سايت را با include كردن يك فايل html با محتويات زير روي utf-8 تنظيم كردم ولي درست نشد.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
<title>Untitled Document</title>
</head>
<body>
منظورم اینه که وقتی میخوای save کنی encoding رو utf-8 بذاری!

خصوصا برای فایلهای حاوی کدهای php
 

iran-TEC

Member
مشكل اول حل شد ولي مشكل دوم كه مشكل اصلي هم است همچنان باقي است مي خواستم بيشتر توضيح بدم :
من ابتدا سورس يك سايت رو با استفاده از curl مي خونم در متغيري قرار مي دم و با استفاده از توابع كار با رشته php قسمت تگ <title> رو جدا مي كنم و با استفاده از strip_tags تگ هاي title رو هم حذف كرده ام و فقط متن فارسي اين تگ باقي مي مونه وقتي اقدام به چاپ كل رشته فارسي مي كنم بدون هيچ مشكلي نمايش داده مي شود ولي وقتي قصد چاپ كاراكتر به كاركتر رشته رو دارم در حالت utf-8 به صورت مستطيل و در حالت windows-1256 به صورت حرف هاي ظ و ط و چند علامت ناخوانا مي باشد من رشته رو به صورت يك آرايه از كاراكتر ها در نظر مي گيرم و با حلقه while چاپ مي كنم البته بايد بگم كه سايت هايي كه charset رو بر روي windows-1256 تنظيم كرده اند اين مشكل وجود ندارد (در صورت تنظيم header بر روي windows-1256)
 

ziXet

مدیر انجمن PHP/MYSQL
مشكل اول حل شد ولي مشكل دوم كه مشكل اصلي هم است همچنان باقي است مي خواستم بيشتر توضيح بدم :
من ابتدا سورس يك سايت رو با استفاده از curl مي خونم در متغيري قرار مي دم و با استفاده از توابع كار با رشته php قسمت تگ <title> رو جدا مي كنم و با استفاده از strip_tags تگ هاي title رو هم حذف كرده ام و فقط متن فارسي اين تگ باقي مي مونه وقتي اقدام به چاپ كل رشته فارسي مي كنم بدون هيچ مشكلي نمايش داده مي شود ولي وقتي قصد چاپ كاراكتر به كاركتر رشته رو دارم در حالت utf-8 به صورت مستطيل و در حالت windows-1256 به صورت حرف هاي ظ و ط و چند علامت ناخوانا مي باشد من رشته رو به صورت يك آرايه از كاراكتر ها در نظر مي گيرم و با حلقه while چاپ مي كنم البته بايد بگم كه سايت هايي كه charset رو بر روي windows-1256 تنظيم كرده اند اين مشكل وجود ندارد (در صورت تنظيم header بر روي windows-1256)
خب شما باید برای split کردن توابع مالتی بایت باید از mb_..... استفاده کنی!
اینوببین میفهمی
http://php.net/mb_substr
موفق باشید
 

iran-TEC

Member
با تشكر از shahkey.com به خاطر راهنمايي هاي بسيار مهم شان لطفا در صورت امكان به مشكل زير هم پاسخ دهيد :
براي مقايسه كاراكتر به كاراكتر رشته از همين توابع مي شود استفاده كرد :
هدف برنامه من اينه كه كلمات فارسي رو در داخل رشته تشخيص بده و سپس اين كلمات رو در بانك ذخيره كنه چيزي مثل كار موتور هاي جستجو
 
آخرین ویرایش:

ziXet

مدیر انجمن PHP/MYSQL
با تشكر از shahkey.com به خاطر راهنمايي هاي بسيار مهم شان لطفا در صورت امكان به مشكل زير هم پاسخ دهيد :
براي مقايسه كاراكتر به كاراكتر رشته از همين توابع مي شود استفاده كرد :
هدف برنامه من اينه كه كلمات فارسي رو در داخل رشته تشخيص بده و سپس اين كلمات رو در بانك ذخيره كنه چيزي مثل كار موتور هاي جستجو
باید یه الگوریتم بنویسی!
به این راحتیا نمیشه کلمه فارسی رو تو متن تشخیص داد!
ولی میتونی یه آرایه درست کنی که توش همه حروف فارسی باشه بعد با حلقه for تک تک حرف ها رو با آرایه مقایسه کنی، اگه تو آرایه بود چاپ کنه اگه نبود چاپ نکنه!
 

جدیدترین ارسال ها

بالا