View Full Version : استفاده از strtok() تودرتو !!!
p30rex
چهارشنبه 17 شهریور 1389, 03:01 صبح
سلام
من یه رشته دارم به صورت:
$x = "ehsan;rajabi;12/mohamad;karimi;15/hamid;rezayi;20";
حالا می خوام اول رشته ها با علامت "/" تجزیه بشن یعنی فرآیند تجزیه وقتی به / رسید انجام بشه
بعد این رشته های کوچکتر بوجود اومده خودشون با ";" تجزیه بشن و در انتها در متغیرهایی ذخیره بشن
میدونم باید از strtok() استفاده کنم اما به نظرم این کارپیچیده میاد! نمیدونم چطوری انجام بدم!
کمکم میکنید؟
sama01
چهارشنبه 17 شهریور 1389, 03:48 صبح
شما میخوای چه طوری ذخیره بشن؟
مثلا در مورد همین رشتهای که مثال زدی، بعد از این عملیات، باید چه متغیرهایی داشته باشی؟
bestirani2
چهارشنبه 17 شهریور 1389, 05:44 صبح
در مرحله اول که با / جدا کردی
سپس با یک حلقه for و شماره تعداد از ; جدا کن
تنها نکته اش این هست که نتایج را وارد یک آرایه دو بعدی کنی
sama01
چهارشنبه 17 شهریور 1389, 09:43 صبح
به نظرم این کار رو با splite انجام بدی خیلی بهتره.
bestirani2
چهارشنبه 17 شهریور 1389, 11:16 صبح
به نظرم این کار رو با splite انجام بدی خیلی بهتره.
1. این تابع خیلی کند هست و پی اچ پی 5.3 به بعد بد دانسته شده که استفاده از آن باعث اخطار میشه و اگر بخواهد با عبارات منظم کار کنه باید از preg_split استفاده کنه
2. همیشه عبارات منظم برای یک کار، کند تر هست
binyaft
چهارشنبه 17 شهریور 1389, 11:21 صبح
با explode هم میشه این کار رو کرد
sama01
چهارشنبه 17 شهریور 1389, 12: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 سریعتر است.
این هم نکتهای که فراگرفتم. ممنون.
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.