PDA

View Full Version : سوال: پیدا کردن متن از یک رشته ( با آرایه )



mamali-mohammad
پنج شنبه 01 فروردین 1392, 22:18 عصر
سلام
یه رشته داریم مثلا :

kjahdkjhsdkjahsdkjahdkjahdjakdhjak
یه آرایه هم داریم :

array("kl","op","qw");

حالا میخوایم بگیم هر کردوم از کلماتی که در آرایه هست ، در رشته هم بود یه اخطار بده
چطوری میشه ؟
ممنون

$ M 3 H R D A D $
پنج شنبه 01 فروردین 1392, 23:43 عصر
خوب یک حلقه foreach بزار
و تو بدنه حلقه با دستور strstr سرچ انجام بده

$ M 3 H R D A D $
پنج شنبه 01 فروردین 1392, 23:50 عصر
<?php
$string = 'kjaklhdkjhsdkjahsdkjahdkjahdjakdhjakopopf';
$ar = array("kl","op","qw","opfk");
foreach($ar as $value)
{
if(strlen(strstr($string,$value))>0)
echo $value." Is availble is string.<br/>";
}
?>

MostafaEs3
پنج شنبه 01 فروردین 1392, 23:50 عصر
برای راحتی کار در پیدا کردن متن درون رشته از این تابع استفاده کنید که بوسیله preg_match و preg_quote اطلاعات مورد نظر را جستجو میکند ::


function strinstr($find, $str) {
if (preg_match('~'.preg_quote($find).'~',$str)){
return true;
}
return false;
}


حالا فکر کنم با یک حلقه foreach بتونید مقادیر آرایه رو توی رشته جستجو کنید ... یک مثال ::


function strinstr($find, $str) {
if (preg_match('~'.preg_quote($find).'~',$str)){
return true;
}
return false;
}

$text = 'I want to buy a coffee...!';
$words = array('tea', 'coffee', 'drinkable');
$existWords = array();

## Loop
foreach($words as $word) {
if (strinstr($word, $text)) {
$existWords[] = $word;
}
}

if(count($existWords) > 0) {
echo 'Error :: ' . implode(', ', $existWords);
}

MMSHFE
جمعه 02 فروردین 1392, 08:49 صبح
<?php
$string = 'kjaklhdkjhsdkjahsdkjahdkjahdjakdhjakopopf';
$ar = array("kl","op","qw","opfk");
foreach($ar as $value)
{
if(strlen(strstr($string,$value))>0)
echo $value." Is availble is string.<br/>";
}
?>
بهتره بجای مقایسه بصورت 0 < به شکل زیر مقایسه کنید:

if(strlen(strstr($string,$value)) !== false)
چون در حالت اول، اگه مکان رشته پیدا شده در همون ابتدای رشته اصلی باشه، شرط 0 < اشتباه میشه درحالی که رشته پیدا شده. حتی =! هم نباید استفاده بشه چون اون هم صفر رو با false یکسان درنظر میگیره و حتماً باید از ==! استفاده کنید تا علاوه بر مقدار، نوع هم بررسی بشه و فقط درصورتی که دقیقاً false برگردونده بشه، شرط اشتباه در بیاد.
-----
پاورقی: راستی، هرچند به PHP ربطی نداره ولی بهتره توی پیغام هم از exists بجای is available استفاده کنید چون exists یعنی «وجود دارد» ولی is available یعنی «در دسترس (قابل استفاده) است».

$ M 3 H R D A D $
جمعه 02 فروردین 1392, 09:54 صبح
کاملا درست ! آقا ! تا حالا غلط املایی بود ! الان کلان دستور زبان فارسی ما زیر سوال رفت ! از برکات سال جدیده دیگه :دی

MMSHFE
جمعه 02 فروردین 1392, 10:23 صبح
:لبخند: فقط یک نکته دیگه: آغا رو درمورد مردها به کار نمیبرن. مثال: گوهرشاد آغا - آغا محمدخان قاجار. این رو دیگه سعی کنید درست کنید چون معنای جالبی نداره :چشمک:

mamali-mohammad
جمعه 02 فروردین 1392, 12:48 عصر
:لبخند: فقط یک نکته دیگه: آغا رو درمورد مردها به کار نمیبرن. مثال: گوهرشاد آغا - آغا محمدخان قاجار. این رو دیگه سعی کنید درست کنید چون معنای جالبی نداره :چشمک:

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

mamali-mohammad
جمعه 02 فروردین 1392, 16:03 عصر
متاسفانه کد کار نکرد

MMSHFE
جمعه 02 فروردین 1392, 16:53 عصر
<?php
$string = 'kjaklhdkjhsdkjahsdkjahdkjahdjakdhjakopopf';
$ar = array('kl', 'op', 'qw', 'opfk');
foreach($ar as $value) {
if(strpos($string, $value) !== false) {
echo '<p>' . $value . ' exists is string.</p>' . PHP_EOL;
}
}
?>

mamali-mohammad
جمعه 02 فروردین 1392, 17:24 عصر
استاد زا !==false استفاده میکنم جوا نمیده اما از >0 استفاده کنم مشکل حل میشه
چه کنیم ؟

MMSHFE
جمعه 02 فروردین 1392, 17:57 عصر
باید از strpos استفاده کنید. این تابع برای جستجو سریعتره چون فقط مکان پیدا شدن رو میگه و اگه پیدا نکنه false بر میگردونه.

mamali-mohammad
جمعه 02 فروردین 1392, 18:28 عصر
ممنون از شما
دوتا تاپیک دیگه زدم اگه وقت کنید ببیید ممنون میشم