ورود

نسخه کامل مشاهده نسخه کامل : برداشت چند داده از یک متن



kaka.ronaldo
26-01-2012, 21:37
سلام ؛
یه کمی که تو سایتای مختلف چرخ میزدم دیدم که بعضی جاها PHP از یک متن (یا یک داده تو MySQL ) چند تا داده استخراج میکنه ،


مثلا : وقتی تو قسمت سرچ گوگل همچین داده ای وارد میشه :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
برنامه میفهمه که باید تو سایت P30WORLD دنباله کلمه x بگرده با اینکه همه ی اینا تو یه INPUT وارد شدن ولی برنامه ورودی رو تحلیل میکنه


یا : یه جا دیده بودم که اطلاعات مربوط به یه داده ی MySQL رو به طور کلی تو یه ورودی نوشتن یعنی برای ثبت همه ی آیپی هایی که ازین صقحه بازدید کردن نیومدن برای هر آیپی یه ردیف (ROW) جدید وارد کنن بلکه همه رو تو یه ردیف و تو قسمت IP به این صورت وارد کرده بودن IP1, IP2, IP3, ... و PHP هر کدوم ازین IP ها رو به طور جداگونه میتونست تشخیص بده.

حالا میخوام بدونم این کار چطوری امکان پذیره ؟

neopersia
27-01-2012, 12:14
سلام
بستگی به متن ورودی و خروجی که لازمه ازش گرفته بشه داره.
در php از توابع مختلفی میشه برای جدا کردن متنها استفاده کرد. str_split, substr, explode, split, preg_split, preg_match و ... که هر کدومش کار خاص خودش رو انجام میده

kaka.ronaldo
27-01-2012, 22:26
سلام
بستگی به متن ورودی و خروجی که لازمه ازش گرفته بشه داره.
در php از توابع مختلفی میشه برای جدا کردن متنها استفاده کرد. str_split, substr, explode, split, preg_split, preg_match و ... که هر کدومش کار خاص خودش رو انجام میده
اگه توضیح بیشتری بدین ممنون میشم . :11:

neopersia
27-01-2012, 22:57
خوب شما یک سوال کلی پرسیدید منم یک جواب کلی دادم :دی
اینطوری توضیح بیشتر هم نمیشه داد چون باید همه اون توابع رو توضیح بدم. رفرنس این توابع رو چک کنید ببینید کدوم یکی بیشتر به دردتون میخوره و از همون استفاده کنید. یا اینکه سوالتون رو جزئی تر کنید تا بشه بهش جواب داد

kaka.ronaldo
27-01-2012, 23:31
ممنون از جوابتون اگه امکان داره مثال دومم رو توضیح بدین که چطور امکان داره IP ها رو جدا کرد.

neopersia
28-01-2012, 21:04
در این مورد استفاده از explode بهترین روش هست:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

ناگفته نمونه که ذخیره کردن چند مقدار در یک فیلد اصولاً صحیح نیست که البته مربوط به بانکهای اطلاعاتی میشه و به این سوال زیاد ربطی نداره :دی

m.m.m5651
28-01-2012, 23:19
expload نیست اون explode ه توی متن اشتباه نوشتین :دی
برای اینکه ممکنه بعضی اوقات، بین دو ویرگول هیچی نباشه و در واقع یه فیلد توی آرایه خالی می مونه از preg_split استفاده کنید بهتره.

اطلاعات بیشتر
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]=psy-ab&hl=en&safe=active&source=hp&q=preg_split+vs+explode&pbx=1&oq=preg_split+vs+&aq=0&aqi=g1g-v1g-j1g-b1&aql=&gs_sm=e&gs_upl=4836l5117l0l6314l4l4l0l0l0l0l152l295l3.1l4l 0&bav=on.2,or.r_gc.r_pw.r_cp.,cf.osb&fp=8103bbdd3fd496cb&biw=1366&bih=643 ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] arch%3Faq%3Df%26sourceid%3Dchrome%26ie%3DUTF-8%26q%3Dpreg_split%23sclient%3Dpsy-ab%26hl%3Den%26safe%3Dactive%26source%3Dhp%26q%3Dp reg_split%2Bvs%2Bexplode%26pbx%3D1%26oq%3Dpreg_spl it%2Bvs%2B%26aq%3D0%26aqi%3Dg1g-v1g-j1g-b1%26aql%3D%26gs_sm%3De%26gs_upl%3D4836l5117l0l631 4l4l4l0l0l0l0l152l295l3.1l4l0%26bav%3Don.2%2Cor.r_ gc.r_pw.r_cp.%2Ccf.osb%26fp%3D8103bbdd3fd496cb%26b iw%3D1366%26bih%3D643)

neopersia
29-01-2012, 00:06
expload نیست اون explode ه توی متن اشتباه نوشتین :دی
برای اینکه ممکنه بعضی اوقات، بین دو ویرگول هیچی نباشه و در واقع یه فیلد توی آرایه خالی می مونه از preg_split استفاده کنید بهتره.

اطلاعات بیشتر
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]=psy-ab&hl=en&safe=active&source=hp&q=preg_split+vs+explode&pbx=1&oq=preg_split+vs+&aq=0&aqi=g1g-v1g-j1g-b1&aql=&gs_sm=e&gs_upl=4836l5117l0l6314l4l4l0l0l0l0l152l295l3.1l4l 0&bav=on.2,or.r_gc.r_pw.r_cp.,cf.osb&fp=8103bbdd3fd496cb&biw=1366&bih=643
حالا شما به بزرگی خودتون ببخشید. غلط املایی پیش میاد!
در مورد جواب هم اول اینکه نتیجه preg_split وقتی که ویرگولها بینشون خالی باشه چه فرقی با explode داره؟ یا اینکه اصلاً چرا باید المنت خالی در صورتی که وجود داره حذف بشه؟! مطمئناً المنت خالی هم اگر وجود داشته باشه یک ستون از اطلاعات وارد شده هست و باید حساب بشه. اگر لازم باشه توی نتیجه نهایی باید چک بشه که المنت خالی هست یا نه

m.m.m5651
29-01-2012, 00:16
من فقط این رو گفتم که کار رو راحت تر کنم و راهنمایی کنم نه درگیری ایجاد کنم و با کسی دعوا ندارم! اگر هم میخواید بگید بازم پست هام اسپمه، بی احترامی به اشخاصه، درگیری دارم با اشخاص(!) و ... فوقش میرم یه فروم دیگه.

======================
======================

ادیت: اشتباهاتتان رو بپذیرید!

neopersia
29-01-2012, 00:37
من فقط این رو گفتم که کار رو راحت تر کنم و راهنمایی کنم نه درگیری ایجاد کنم و با کسی دعوا ندارم! اگر هم میخواید بگید بازم پست هام اسپمه، بی احترامی به اشخاصه، درگیری دارم با اشخاص(!) و ... فوقش میرم یه فروم دیگه.

======================
======================

ادیت: اشتباهاتتان رو بپذیرید!

عزیزم بحث اشتباه نیست. شما جواب سوال منو بدید که چرا باید از preg_split استفاده بشه نه از explode بعد من اشتباهمو میپذیرم.
چون من برای explode دلیل دارم. و اگر دقت کرده باشید گفتم که بهترین راه است نه اینکه تنها راه!