PDA

View Full Version : الگوی استخراج یک رشته



rookie_php
شنبه 16 بهمن 1389, 17:32 عصر
سلام,یکی لطف کنه و نوشتن الگوی زیر رو بهم بگه,یا خود الگو رو بزاره
پیشاپیش ممنون

میخوام yahooId را از رشته استخراج کنم

ymsgr:sendIM?yahooId&m=Message From web Site

mohsen6500
شنبه 16 بهمن 1389, 19:15 عصر
سلام
من اینطوری تونستم با دو تا explode درش بیارم اما شاید دوستان روش آسون تری هم داشته باشند

<?php
$msg = 'ymsgr:sendIM?yahooId&m=Message From web Site';
$explode = explode('?',$msg);
$param1 = $explode[1];
$explode2 = explode('&',$param1);
$YahooID = $explode2[0];
echo $YahooID;
?>

rookie_php
شنبه 16 بهمن 1389, 21:48 عصر
دست درد نکنه mohsen6500 (http://barnamenevis.org/member.php?162484-mohsen6500) جان,این روش به کار من نمیاد. من الگوشو میخوام
من اینو نوشتم و خروجیهای زیر رو میده,که میخوام جوری اصلاح بشه که فقط yahooId خروجی باشه


#sendim\?(.*?)\&#i



sendIM?yahooId&
yahooId

Mr.Moghadam
یک شنبه 17 بهمن 1389, 00:01 صبح
سلام
با استفاده از دستور زیر


preg_match_all('/yahooId/i', 'ymsgr:sendIM?yahooId&m=Message From web Site', $result);

که $result مثل زیر بهت میده


Array
(
[0] => Array
(
[0] => yahooId
)
)

rookie_php
یک شنبه 17 بهمن 1389, 01:10 صبح
مرسی دوست من,ببینید منظورم از yahooId یعنی ایدی یاهو,حالا هر ایدی ممکنه اینجا قرار بگیره.پس چیزی که نوشتین نمیتونه جواب بده.اگه شما با عبارات با قاعده اشنایی دارین الگوی زیر رو اصلاح کنید. چون دو جور خروجی میده

#sendim\?(.*?)\&#i

Mr.Moghadam
یک شنبه 17 بهمن 1389, 07:02 صبح
سلام
برات یه تابع نوشتم
فکر کنم همینی که میخوای باشه

<?php
function split_str($str)
{
$str1 = "ymsgr:sendIM?";
$str2 = "&m=Message From web Site";
$f = strpos($str,$str1)+strlen($str1);
$e= strpos($str,$str2,$f);
return substr($str,$f,$e-$f );
}

echo split_str("ymsgr:sendIM?YahooooID&m=Message From web Site");

?>

rookie_php
یک شنبه 17 بهمن 1389, 12:26 عصر
khoda2006 (http://barnamenevis.org/member.php?49591-khoda2006) جان یه دنیا ممنون که وقت گذاشتین, ولی هیچ روشی بجز استفاده از Regular Expression والگوی مورد نظر ,به کار من نمیاد.

Mr.Moghadam
یک شنبه 17 بهمن 1389, 13:53 عصر
khoda2006 (http://barnamenevis.org/member.php?49591-khoda2006) جان یه دنیا ممنون که وقت گذاشتین, ولی هیچ روشی بجز استفاده از Regular Expression والگوی مورد نظر ,به کار من نمیاد.

سلام
خواهش میکنم وظیفه است

ببین از الگوی زیر هم میتونی استفاده کنی


preg_replace('/([?]).*([&])/i', $ID, 'ymsgr:sendIM?YahooooID&m=Message From web Site');


اما این رو که من امتحان کردم & و ؟ رو جایگزین میکنه که میتونی به صورت زیر استفاده کنی


preg_replace('/([?]).*([&])/i','?'.$ID.'&', 'ymsgr:sendIM?YahooooID&m=Message From web Site');


اینو امتحان کن ایشالا به کارت بیاد
موفق باشی