PDA

View Full Version : حرفه ای: مشکل با Regular expression در preg_match_all



generalhak
یک شنبه 22 تیر 1393, 02: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, 03: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, 03:13 صبح
سلام...
خوب از این هم میتونی استفاده کنی :



$string = 'salam;salam;aleyk;superme;super;';
$ar=preg_split('*;*',$string);
print_r($ar);

MMSHFE
یک شنبه 22 تیر 1393, 03:35 صبح
اینم میشه:

print_r(explode(';', $string));

MRmoon
یک شنبه 22 تیر 1393, 07: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, 10: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, 11: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, 11: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, 15:49 عصر
بله عبارت ها باید با s شروع میشد .. اینطور که مثال های دوستان رو بررسی کردم مشکل عبارت خودم یک "؟" بود که با کمک شما حل شد ... با تشکر