PDA

View Full Version : استفاده از strtok() تودرتو !!!



p30rex
چهارشنبه 17 شهریور 1389, 02:01 صبح
سلام
من یه رشته دارم به صورت:


$x = "ehsan;rajabi;12/mohamad;karimi;15/hamid;rezayi;20";
حالا می خوام اول رشته ها با علامت "/" تجزیه بشن یعنی فرآیند تجزیه وقتی به / رسید انجام بشه
بعد این رشته های کوچکتر بوجود اومده خودشون با ";" تجزیه بشن و در انتها در متغیرهایی ذخیره بشن


میدونم باید از strtok() استفاده کنم اما به نظرم این کارپیچیده میاد! نمیدونم چطوری انجام بدم!

کمکم میکنید؟

sama01
چهارشنبه 17 شهریور 1389, 02:48 صبح
شما می‌خوای چه طوری ذخیره بشن؟
مثلا در مورد همین رشته‌ای که مثال زدی، بعد از این عملیات،‌ باید چه متغیرهایی داشته باشی؟

bestirani2
چهارشنبه 17 شهریور 1389, 04:44 صبح
در مرحله اول که با / جدا کردی
سپس با یک حلقه for و شماره تعداد از ; جدا کن
تنها نکته اش این هست که نتایج را وارد یک آرایه دو بعدی کنی

sama01
چهارشنبه 17 شهریور 1389, 08:43 صبح
به نظرم این کار رو با splite انجام بدی خیلی به‌تره.

bestirani2
چهارشنبه 17 شهریور 1389, 10:16 صبح
به نظرم این کار رو با splite انجام بدی خیلی به‌تره.
1. این تابع خیلی کند هست و پی اچ پی 5.3 به بعد بد دانسته شده که استفاده از آن باعث اخطار میشه و اگر بخواهد با عبارات منظم کار کنه باید از preg_split استفاده کنه
2. همیشه عبارات منظم برای یک کار، کند تر هست

binyaft
چهارشنبه 17 شهریور 1389, 10:21 صبح
با explode هم میشه این کار رو کرد

sama01
چهارشنبه 17 شهریور 1389, 11:01 صبح
به نقل از PHP Manual:


Tip preg_split() (http://www.barnamenevis.org/forum/function.preg-split.html), which uses a Perl-compatible regular expression syntax, is often a faster alternative to split(). If you don't require the power of regular expressions, it is faster to use explode() (http://www.barnamenevis.org/forum/function.explode.html), which doesn't incur the overhead of the regular expression engine.

خلاصه‌اش این می‌شه که preg_split اغلب سریع‌تر از split است. ولی اگر به توانایی‌های regular expression نیاز ندارید،‌ explode سریع‌تر است.

این هم نکته‌ای که فراگرفتم. ممنون.