کمک در زمینه الگوی regex

masoum

New Member
سلام
من یه رشته به صورت زیر دارم:
Wiley | English | 2009-06-09 | ISBN: 0470193417 | 272 pages | PDF | 5,3 MB
حالا میخوام با regex در php فقط قسمت 5,3 MB رو ازش دربیارم،فقط همیشه عدد سایز به این صورت نیست بعضی وقتها به جای کاما علامت نقطه داره بعضی وقتها هم هیچی نداره یه عدد ساده هست،لطفا الگوش رو بهم بدین
 

ziXet

مدیر انجمن PHP/MYSQL
سلام
من یه رشته به صورت زیر دارم:
Wiley | English | 2009-06-09 | ISBN: 0470193417 | 272 pages | PDF | 5,3 MB
حالا میخوام با regex در php فقط قسمت 5,3 MB رو ازش دربیارم،فقط همیشه عدد سایز به این صورت نیست بعضی وقتها به جای کاما علامت نقطه داره بعضی وقتها هم هیچی نداره یه عدد ساده هست،لطفا الگوش رو بهم بدین
بهرته از explode استفاده کنید. http://php.net/explode
 

mosi20

Active Member
درست میگن با اکسپلود کردن علامت | و بدست آوردن انتهای رشته با end() خیلی بهتره
 

sunrise

Member
البته همونطور که دوستان هم اشاره کردند براي اين کار اگه از تابع explode استفاده کنيد مناسب تر هست، اما اگه اصرار داريد که اين کار رو توسط Regular Expression انجام بديد، مي تونيد اينطور عمل کنيد:
PHP:
$string = 'Wiley | English | 2009-06-09 | ISBN: 0470193417 | 272 pages | PDF | 5,3 MB';
$components = preg_split('#\|#', $string);
echo $components[6];
که البته اين معادل همون تابع explode عمل مي کنه.

حالت ديگه اي هم که مي تونيد استفاده کنيد اين هست:
PHP:
$string = 'Wiley | English | 2009-06-09 | ISBN: 0470193417 | 272 pages | PDF | 5,3 Bytes';
preg_match('#[0-9.,]+ Bytes?|KB|MB#i', $string, $size);
echo $size[0];
 
آخرین ویرایش:

masoum

New Member
آره حتما باید با regex بنویسم ولی دوست عزیز 'sunrise' این کدی که دادی برای بعضی از حالتها مثل
AUERBACH | 2007-12-17 | ISBN: 1420062271 | PDF | 304 pages | 8,1 Mb
جواب نمیده ولی مثلا برای
Cybertech Publishing (2004-04-01) | ISBN 159140245X | 250 Pages | CHM | 1,7 Mb
جواب میده،چرا؟؟ چیکارش کنم؟ آخه اینا که مثل همدیگن،اصلا چرا این regex اینقدر داغونه :cry:
 
آخرین ویرایش:

sunrise

Member
آره حتما باید با regex بنویسم ولی دوست عزیز 'sunrise' این کدی که دادی برای بعضی از حالتها مثل
AUERBACH | 2007-12-17 | ISBN: 1420062271 | PDF | 304 pages | 8,1 Mb
جواب نمیده ولی مثلا برای
Cybertech Publishing (2004-04-01) | ISBN 159140245X | 250 Pages | CHM | 1,7 Mb
جواب میده،چرا؟؟ چیکارش کنم؟ آخه اینا که مثل همدیگن،اصلا چرا این regex اینقدر داغونه :cry:
اين رو استفاده کنيد:
کد:
#([0-9.,]+) (Bytes?|KB|MB)#i
 

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

بالا