PDA

View Full Version : سوال: پیدا کردن اعضای یک آرایه در یک متن php



__ahmad__
دوشنبه 20 خرداد 1392, 16:49 عصر
سلام دوستان
سوال من اینه که من یک متن دارم که توش آدرس نوشته شده، میخوام از توش استان و شهر رو در بیارم، به نظرم راحتتر اینه که من رو شهر زوم کردم و با دستور زیر اسم شهر رو خارج کردم. حالا استان رو میخوام دقیق در بیارم یعنی به استانی که تو متن هست کاری ندارم؛ میخوام استان مربوط به شهر رو از تو آرایه خودم در بیارم.
یعنی من یک آرایه تودرتو دارم که استان ها المانهای آرایه بزرگترند (states$) و خودشون میشن آرایه های شهرها.
برای شهر از دستور زیر استفاده کردم

$existWords = array();

foreach($states as $state)
{
foreach($state as $word)
{
if (strstr($text,$word))
{
$existWords[1]=$word;
break;
}
}
}
حالا میخوام اسم استان رو مثلا بزارم تو existword[0]
کسی می تونه کمک کنه؟

ضمنا دستور زیر جواب نداد؛


$existWords = array();
$flag = false;
foreach($states as $state) {
foreach($state as $word) {
if (strstr($text, $word)) {
$existWords[0] = $state;
$existWords[1] = $word;
$flag = true;
}
if($flag) {
break;
}
}
if($flag) {
break;
}
}

چون یکی اینکه مثلا به اشتباه ری رو به جای ساری میزاره تو خروجی
دوم اینکه استان رو به شکل آرایه خارج می کنه و من نمی تونم در خروجی و با دستور زیر اون رو echo بگیرم.


$final="$existWords[0],$existWords[1]";
echo $final;
//output : ,Array,ری

sh.n.n786
سه شنبه 21 خرداد 1392, 00:15 صبح
درود و ...
خب دوست عزیز شما باید دیباگ کردنو یاد بگیرید به این صورت میتونید خونه های داخل آرایه رو ببینید بعد خودتون جایگزین کنید .



$existWords = array();
$flag = false;foreach($states as $state) {
foreach($state as $word) {
if (strstr($text, $word)) {
print_r($state);
print_r($word);
$flag = true;
}
if($flag) {
break;
}
}
if($flag) {
break;
}
}

MMSHFE
چهارشنبه 22 خرداد 1392, 14:06 عصر
<!doctype html>
<html>
<head>
<meta charset="UTF-8"/>
</head>
<body>
<br/>

<?php

$text = "فلان فلانی - مازندران-ساری...";

$states = array("آذربایجان شرقی"=>array("آذر شهر","اسكو","اهر","بستان آباد","بناب","بندر شرفخانه","تبریز","تسوج","جلفا","سراب","شبستر","عجبشیر","قره آغاج","كلیبر","كندوان","مرند","ملكان","میانه","مراغه","هادیشهر","هشترود","هریس","ورزقان"),"آذربایجان غربی"=>array("ارومیه","اشنویه","بوكان","تكاب","پیرانشهر","پلدشت","چالدران","خوی","سر دشت","سلماس","شاهین دژ","شوط","چایپاره","ماكو","مهاباد","میاندوآب","نقده"),"اردبیل"=>array("اردبیل","بیله سوار","پارس آباد","خلخال","سرعین","كوثر","كیوی","گرمی","مشگین شهر","مغان","نمین","نیر"),"اصفهان"=>array("آران و بیدگل","اردستان","اصفهان","باغ بهادران","تیران","خمینی شهر","خوانسار","زرین شهر","سمیرم","شاهین شهر","شهرضا","فریدن","فریدون شهر","فلاورجان","فولاد شهر","كاشان","گلپایگان","مباركه","نایین","نجف آباد","نطنز","دهاقان"),"ایلام"=>array("آبدانان","ایلام","ایوان","دره شهر","دهلران","سرابله","شیروان چرداول","مهران"),"بوشهر"=>array("اهرم","بوشهر","تنگستان","خارك","خورموج","دیر","دشتستان","دشتی","دیلم","ریشهر","كنگان","گناوه","عسلویه"),"البرز"=>array("كرج","آسارا","اشتهارد","هشتگرد","كوهسار","چهارباغ","طالقان","جوستان","نظرآباد","تنكمان","ساوجبلاغ","فردیس","مهرشهر"),"تهران"=>array("اسلامشهر","بومهن","تجریش","تهران","پاكدشت","دماوند","رباط كریم","ری","رودهن","شریف آباد","شهریار","فشم","فیروزكوه","قدس","قرچك","كن","كهریزك","گلستان","لواسان","ملارد","ورامین"),"چهارمحال بختیاری"=>array("اردل","بروجن","چلگرد","سامان","شهركرد","فارسان","لردگان"),"خراسان جنوبی"=>array("بیرجند","بشرویه","خضری","سربیشه","قائن","نهبندان","فردوس","سرایان","طبس"),"خراسان رضوی"=>array("بردسكن","تایباد","تربت جام","تربت حیدریه","چناران","خواف","درگز","سبزوار","سرخس","طرقبه","فریمان","قوچان","كاخك","كلات","كاشمر","گناباد","مشهد","نیشابور","رشتخوار","جوین","خلیل آباد"),"خراسان شمالی"=>array("آشخانه","اسفراین","بجنورد","جاجرم","شیروان"),"خوزستان"=>array("آبادان","امیدیه","اندیمشك","اهواز","ایرانشهر","ایذه","باغ ملك ","بندرامام خمینی","بندر ماهشهر","بهبهان","دزفول","خرمشهر","رامهرمز","سوسنگرد","شادگان","شوش","شوشتر","لالی","مسجد سلیمان","هندیجان","هویزه"),"زنجان"=>array("ابهر","ایجرود","خرمدره","زنجان","قیدار","طارم","ماهنشان"),"سمنان"=>array("ایوانكی","بسطام","سمنان","شاهرود","دامغان","گرمسار"),"سیستان و بلوچستان"=>array("ایرانشهر","چابهار","خاش","راسك","زابل","زاهدان","سراوان","سرباز","میرجاوه","نیكشهر"),"فارس"=>array("آباده","اردكان","ارسنجان","استهبان","اقلید","جهرم","حاجی آباد","خرم بید","داراب","سپیدان","سروستان","سوریان","شیراز","صفاشهر","فراشبند","فسا","فیروز آباد","قیروكارزین","كازرون","لار","لامرد","مرودشت","ممسنی","مهر","نی ریز","نورآباد","خنج","پاسارگاد"),"قزوین"=>array("آبیك","بوئین زهرا","تاكستان","قزوین","الوند"),"قم"=>array("قم","جعفریه"),"كردستان"=>array("بانه","بیجار","دیواندره","سقز","سنندج","قروه","كامیاران","مریوان"),"كرمان"=>array("بابك","بافت","بردسیر","بم","جیرفت","راور","رفسنجان","زرند","سیرجان","كهنوج","كرمان"),"كرمانشاه"=>array("اسلام آباد غرب","پاوه","جوانرود","سر پل ذهاب","سنقر","صحنه","قصر شیرین","كرمانشاه","كنگاور","گیلان غرب","هرسین"),"كهكیلویه و بویراحمد"=>array("دنا","دوگنبدان","دهدشت","سی سخت","گچساران","یاسوج"),"گلستان"=>array("آزاد شهر","آق قلا","بندر گز","تركمن","رامیان","علی آباد كتول","كلاله","كردكوی","گنبد كاووس","گرگان ","مینو دشت"),"گیلان"=>array("آستانه اشرفیه","آستارا","املش","بندرانزلی","تالش","رشت","رضوان شهر","رودبار","رستم آباد","رودسر","رود سر","سیاهكل","شفت","صومعه سرا","فومن","كلاچای","لاهیجان","لنگرود","ماسال","ماسوله","منجیل","هشتپر"),"لرستان"=>array("ازنا","الشتر","الیگودرز","بروجرد","پلدختر","خرم آباد","دزفول","دورود","كوهدشت","ماهشهر","نور آباد","شول آباد"),"مازندران"=>array("آمل","بابل","بابلسر","بلده","بهشهر","پل سفید","تنكابن","ساری","سواد كوه","جویبار","چالوس","رامسر","فریدون كنار","قائم شهر","محمود آباد","نكا","نور","نوشهر","گلوگاه"),"مركزی"=>array("آشتیان","اراك","تفرش","خمین","دلیجان","ساوه","سر بند","سربند","شازند","محلات","زرندیه"),"هرمزگان"=>array("ابوموسی","انگهران","بستك","بندر جاسك","بندرعباس","بندر لنگه","تنب بزرگ","حاجی آباد","دهبارز","قشم","كیش","میناب","بندر خمیر"),"همدان"=>array("اسدآباد","بهار","تویسركان","رزن","كبودر آهنگ","ملایر","نهاوند","همدان"),"یزد"=>array("ابركوه","اردكان","اشكذر","بافق","تفت","مهریز","میبد","هرات","یزد"));

$existWords = array();

$flag = false;

foreach($states as $state) {
foreach($state as $word) {
if (strpos($text, $word) !== false) {
$existWords[0] = $state;
$existWords[1] = $word;
$flag = true;
}
if($flag) {
break;
}
}
if($flag) {
break;
}
}

if($flag) {
print_r ($existWords);
$final = "{$existWords[0]},{$existWords[1]}";
echo $final;
}

?>
</body>
</html>

__ahmad__
پنج شنبه 23 خرداد 1392, 11:18 صبح
ممنون از جوابتون!!!
ولی این دستور خروجی زیر رو داره:

Array ( [0] => Array ( [0] => اسلامشهر [1] => بومهن [2] => تجریش [3] => تهران [4] => پاكدشت [5] => دماوند [6] => رباط كریم [7] => ری [8] => رودهن [9] => شریف آباد [10] => شهریار [11] => فشم [12] => فیروزكوه [13] => قدس [14] => قرچك [15] => كن [16] => كهریزك [17] => گلستان [18] => لواسان [19] => ملارد [20] => ورامین ) [1] => ری )
Notice: Array to string conversion in C:\Program Files (x86)\xampp\htdocs\php\index.php on line 36
Array,ری

دستور preg_match بهتر جواب نمی ده؟

MMSHFE
جمعه 24 خرداد 1392, 19:53 عصر
نه برای این کار شما preg_match کار نمیکنه. باید با همون strpos کار کنید. من کد رو تست کردم و کار کرد. کد کاملتون رو بگذارین.