View Full Version : حرفه ای: مشکل با Regular expression در preg_match_all
generalhak
یک شنبه 22 تیر 1393, 03:16 صبح
سلام
توی Regular expression زیر مشکل دارم من اول و آخر رو مشخص میکنم و خروجی اونی که در زیر نوشتم رو میده اما من میخوام اینو بده :
salam;
salam;
superme;
super;
مشکل اینه که اگر توی یک خط باشه هر کدوم رو جدا نمیاره و همه رو یکی میاره اما میخوام اگر توی یک خط هم باشه همه رو پیدا کنه
$string = 'salam;salam;aleyk;superme;
super;';
preg_match_all("#(s)(.*)(;)#",$string,$matches);
echo "<pre>";
print_r($matches[0]);
echo "</pre>";
خروجی فعلی :
Array(
[0] => salam;salam;aleyk;superme;
[1] => super; )
MMSHFE
یک شنبه 22 تیر 1393, 04:13 صبح
اینو تست کنید:
$string = 'salam;salam;aleyk;superme;
super;';
if(preg_match_all('#([^;]*;)#m', $string, $matches)) {
echo '<pre>' . print_r($matches[1], true) . '</pre>' . PHP_EOL;
}
H:Shojaei
یک شنبه 22 تیر 1393, 04:13 صبح
سلام...
خوب از این هم میتونی استفاده کنی :
$string = 'salam;salam;aleyk;superme;super;';
$ar=preg_split('*;*',$string);
print_r($ar);
MMSHFE
یک شنبه 22 تیر 1393, 04:35 صبح
اینم میشه:
print_r(explode(';', $string));
MRmoon
یک شنبه 22 تیر 1393, 08:07 صبح
درود.
البته دوستان توجه دارند که ایشون میخواند هر چی اولش s باشه رو نشون بدن؟؟؟
کد تصحیح شده ی آقای شهرکی:
$string = 'salam;salam;aleyk;superme;super;';
if(preg_match_all('#(s[^;]*;)#m', $string, $matches)) {
echo '<pre>' . print_r($matches[1], true) . '</pre>' . PHP_EOL;
}
محمد.
MMSHFE
یک شنبه 22 تیر 1393, 11:41 صبح
اینم میشه (اگه عبارتها با s شروع میشه) :
$string = 'salam;salam;aleyk;superme;
super;';
if(preg_match_all('#(s.*?;)#m', $string, $matches)) {
echo '<pre>' . print_r($matches[1], true) . '</pre>' . PHP_EOL;
}
hamidhassas
یک شنبه 22 تیر 1393, 12:36 عصر
درود.
البته دوستان توجه دارند که ایشون میخواند هر چی اولش s باشه رو نشون بدن؟؟؟
کد تصحیح شده ی آقای شهرکی:
$string = 'salam;salam;aleyk;superme;super;';
if(preg_match_all('#(s[^;]*;)#m', $string, $matches)) {
echo '<pre>' . print_r($matches[1], true) . '</pre>' . PHP_EOL;
}
محمد.
همین کار رو چطوری با حروف الفبای فارسی انجام میشه داد مثل ب
MRmoon
یک شنبه 22 تیر 1393, 12:53 عصر
درود.
اینم میشه (اگه عبارتها با s شروع میشه) :
$string = 'salam;salam;aleyk;superme;
super;';
if(preg_match_all('#(s.*?;)#m', $string, $matches)) {
echo '<pre>' . print_r($matches[1], true) . '</pre>' . PHP_EOL;
}
راه زیا داره دیگه.
همین کار رو چطوری با حروف الفبای فارسی انجام میشه داد مثل ب
$string = 'بابا;بابونه;صدر';
if(preg_match_all('#(ب.*?;)#m', $string, $matches)) {
echo '<pre>' . print_r($matches[1], true) . '</pre>' . PHP_EOL;
}
محمد.
generalhak
یک شنبه 22 تیر 1393, 16:49 عصر
بله عبارت ها باید با s شروع میشد .. اینطور که مثال های دوستان رو بررسی کردم مشکل عبارت خودم یک "؟" بود که با کمک شما حل شد ... با تشکر
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.