PDA

View Full Version : استخراج كلمه از يك رشته



bps20590
جمعه 26 شهریور 1389, 21:05 عصر
با سلام
من يك رشته مثل زير دارم


$st='{"t":"Iran","items":[{"t":"Pro League","comp":"76"},{"t":"Azadegan League","comp":"602"}]},
{"t":"Iraq","items":[{"t":"Iraqi League","comp":"518"}]},
{"t":"Ireland Republic","items":[{"t":"Premier League","comp":"34"},{"t":"Division 1","comp":"77"},{"t":"A Championship","comp":"627"},{"t":"FAI Cup","comp":"196"},{"t":"League Cup","comp":"285"}]},{"t":"Italy","items":[{"t":"Ligat Al","comp":"117"},{"t":"Liga Leumit","comp":"141"},{"t":"Liga Artzit","comp":"142"},{"t":"State Cup","comp":"264"},{"t":"Toto Cup Ligat Al","comp":"643"},{"t":"Toto Cup Ligat Leumit","comp":"642"},{"t":"Toto Cup Ligat Artzit","comp":"641"}]}
';

حالا ميخوام با استفاده از دستورات preg_match,preg_match_all آيتمها را بصورت زير جدا كنم
ابتدا نام iran گرفته بشه سپس آيتمهاي زير مجموعه آن با كدآنها دريافت بشه يعني pro league با كد 76 و بعد azadegan با كد602 واينكار براي همه رشته بطور اتوماتيك انجام بشه

funpatogh
جمعه 26 شهریور 1389, 21:53 عصر
چیزی که میخوای رو با شکل نشان بده منظورت واضح نیست

bps20590
جمعه 26 شهریور 1389, 22:01 عصر
منظورم اينه كه بصورت زير استخراج بشه كه بتونم توي ديتابيس ذخيره كنم
Iran Pro league 76
Iran Azadegan league 602

mohmadd
شنبه 27 شهریور 1389, 01:00 صبح
فکر کنم این json باشه .. در php.net سرچ کن

bps20590
شنبه 27 شهریور 1389, 15:06 عصر
من نميدونم چي هستش فقط ميخوام از هم تفكيك كنم

binyaft
شنبه 27 شهریور 1389, 15:38 عصر
خوب این با json هست دیگه ، php.net رو یه سررررررررررررچ بزنید!!!!

امیـرحسین
شنبه 27 شهریور 1389, 23:08 عصر
شما فرمت JSON یعنی عزیز دل دارید و میخواید با Regex اطلاعات رو بگیرید؟؟؟
مثل نمونه زیر به سادگی هلو به همه اطلاعات دسترسی دارید (دقت کنید که نمونه شما داخل یک [] قرار گرفته و تابع json_decode در PHP5 وجود داره):
$str='
[
{
"t":"Iran",
"items":[
{"t":"Pro League","comp":"76"},
{"t":"Azadegan League","comp":"602"}
]
},
{
"t":"Iraq",
"items":[
{"t":"Iraqi League","comp":"518"}
]
},
{
"t":"Ireland Republic",
"items":[
{"t":"Premier League","comp":"34"},
{"t":"Division 1","comp":"77"},
{"t":"A Championship","comp":"627"},
{"t":"FAI Cup","comp":"196"},
{"t":"League Cup","comp":"285"}
]
},
{
"t":"Italy",
"items":[
{"t":"Ligat Al","comp":"117"},
{"t":"Liga Leumit","comp":"141"},
{"t":"Liga Artzit","comp":"142"},
{"t":"State Cup","comp":"264"},
{"t":"Toto Cup Ligat Al","comp":"643"},
{"t":"Toto Cup Ligat Leumit","comp":"642"},
{"t":"Toto Cup Ligat Artzit","comp":"641"}
]
}
]';

$json = json_decode($str);
echo $json[0]->t; // Iran
echo $json[0]->items[0]->t; // Pro League
echo $json[3]->items[6]->comp; // 641

mohmadd
یک شنبه 28 شهریور 1389, 00:50 صبح
امیر حسین جان میشه نحوه کامپایل تابع مورد نظر رو بدی ؟

امیـرحسین
یک شنبه 28 شهریور 1389, 01:12 صبح
JSON آرایه ها و اشیا با فرمت جاوااسکریپت هستند. در جاوااسکریپت آرایه رو با [] هم میسازند و شی رو با {}.
پس در نمونه بالا متغیر یک آرایه است که چهار عنصر داره که هر عنصر خودش یک شی هست که دو تا مشخصه داره: t و items که items از نوع آرایه است که عناصرش شی هستند. تابع json_decode این فرمت رو به شی و آرایه PHP تبدیل می کنه.
طبق مثال
echo $json[0]->t; // Iran
متغیر json$ یک آرایه چهار عنصری هست که عنصر اولش انتخاب شده. همونطور که گفتم عناصر آرایه اصلی شی هستد با دو مشخصه t و items که در اینجا t چاپ شده.

اطلاعات بیشتر درباره JSON: معرفی JSON و JSONP که چی هستند و به چه درد میخورند (http://boplo.ir/web-design/what-are-json-and-jsonp/)

mohmadd
یک شنبه 28 شهریور 1389, 01:59 صبح
البته بنده مشکلی در استفاده از تابع json_decode داشتم .
الان حل شده .
اما یک سئوال دیگه
ما وقتی میخوایم به عناصر ارایه دسترسی پیدا کنیم از این روش استفاده میکنیم

echo $json[0][t]; // Iran

ولی چرا دسترسی به این صورت عمل نمیکنه ؟
ایا معایبی داره ؟؟؟

هر لینکی یا توضیحی دارید لطفا دریغ نفرمایید .

امیـرحسین
یک شنبه 28 شهریور 1389, 11:16 صبح
اونهایی که داخل [] هستند آرایه معمولی هستند و اونهایی که داخل {} شی یا Object هستند.
در اینجا، [0]json$ یک Object است که دو تا مشخصه یا Property داره به نام t و items. پس، اینها رو داخل [0]json$ داریم
$json[0]->t
$json[0]->items