PDA

View Full Version : مبتدی: RexEx



sataho
شنبه 01 مرداد 1390, 11:22 صبح
سلام
من میخوام با استفاده از عبارات منظم تمام اعداد موجود در متن را پیدا کنم
این کد را براش نوشتم
<?php
$subject = "230 3123 ali hasan 21 2 kjskd 88 fdande
650 kajsdl kkiljhsa
ikhasdh s
33oowe
qooqwio iqu qwiheq oq iequ n8 y 8uiwueiwe
qwj 44 lwje q
";
$pattern = '/^[1-9][0-9]*/';
preg_match_all($pattern, $subject , $matches);
print_r($matches);
?>




اما فقط اولیش را میزاره توی آرایه ی $matches
چیکار کنم؟

eshpilen
شنبه 01 مرداد 1390, 13:19 عصر
ببین این با مال شما چه فرقی داره:

$pattern = '/[1-9][0-9]*/';

MMSHFE
شنبه 01 مرداد 1390, 13:33 عصر
$subject = '230 3123 ali hasan 21 2 kjskd 88 fdande 650 kajsdl kkiljhsa ikhasdh s 33oowe qooqwio iqu qwiheq oq iequ n8 y 8uiwueiwe qwj 44 lwje q';
$pattern = '/[1-9][0-9]*/';
preg_match_all($pattern, $subject, $matches);
echo '<pre>';
print_r($matches[0]);
echo '</pre>';

توضيح: همونطور كه دوست خوبم جناب eshpilen اشاره كردن، كاركتر ^ كه گذاشتين، باعث ميشه فقط ابتداي رشته دنبال عدد بگرده.
موفق باشيد.

hosseintdk775
دوشنبه 03 مرداد 1390, 02:50 صبح
بسم الله الرحمن الرحیم
سلام
واسه پترنت از این استفاده کن:

/\d+/g
اینطوری:

$pattern = '/\d+/g';

sataho
پنج شنبه 06 مرداد 1390, 09:48 صبح
حالا فرض کنیم من میخوام توی یک کد اچ تی ام ال تمام قیمت ها را پیدا کنم و با اسم کالا متناظرش مشخص کنم. یک کمی سخت میشه عبارت منظمش، نه ؟

MMSHFE
پنج شنبه 06 مرداد 1390, 21:48 عصر
میشه بیشتر توضیح بدین؟ اصلاً متوجه نشدم منظورتون چیه؟ اگه ممکنه یک مثال ذکر کنید.

sataho
شنبه 08 مرداد 1390, 21:26 عصر
فرش کنید من با CURL تمام کد اچ تی ام ال یک صفحه از یک سایت خرید و فروش را پیدا کردم !
حالا میخوام مثلا اون قسمتی که قیمت رو توش نوشته جداگونه و اون قسمتی که اسم کالاست یا توضیحاتش را جدا پیدا کنم و مثلا توی matches[name] , matches[price] , matches[desc] بریزمشون !

sataho
شنبه 08 مرداد 1390, 21:31 عصر
فقط یک دستور preg_match مسخوام داشته باشه !

MMSHFE
یک شنبه 09 مرداد 1390, 07:33 صبح
ميتونيد با preg_match_all همه رو استخراج كنيد منتها به شرطي كه توي صفحه، قيمتها داخل تگ مخصوصي يا كلاً يك جداكننده خاص قرار داشته باشن كه بشه با استفاده از اون، تشخيص بديم و از بقيه متن تفكيك كنيم.

sataho
دوشنبه 10 مرداد 1390, 09:29 صبح
فرض کنید که قیمت همیشه بین این 2 تا باشه :
<h1 style="float: left;"> و </h1> .
و مثلا اسم محصولمون بین این 2تا باشه :
<h1> و <br /><span class="smallText">[P_000705]</span></h1>.

چه عبارت منظمی باید بنویسم ؟ میخوام حتما یک دستور preg_match_all داشته باشم و متغیرها توی matches[name] , matches[price] , matches[desc قرار بگیره