سلام
یه رشته داریم مثلا :
kjahdkjhsdkjahsdkjahdkjahdjakdhjak
یه آرایه هم داریم :
array("kl","op","qw");
حالا میخوایم بگیم هر کردوم از کلماتی که در آرایه هست ، در رشته هم بود یه اخطار بده
چطوری میشه ؟
ممنون
سلام
یه رشته داریم مثلا :
kjahdkjhsdkjahsdkjahdkjahdjakdhjak
یه آرایه هم داریم :
array("kl","op","qw");
حالا میخوایم بگیم هر کردوم از کلماتی که در آرایه هست ، در رشته هم بود یه اخطار بده
چطوری میشه ؟
ممنون
خوب یک حلقه foreach بزار
و تو بدنه حلقه با دستور strstr سرچ انجام بده
<?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/>";
}
?>
برای راحتی کار در پیدا کردن متن درون رشته از این تابع استفاده کنید که بوسیله 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);
}
بهتره بجای مقایسه بصورت 0 < به شکل زیر مقایسه کنید:
if(strlen(strstr($string,$value)) !== false)
چون در حالت اول، اگه مکان رشته پیدا شده در همون ابتدای رشته اصلی باشه، شرط 0 < اشتباه میشه درحالی که رشته پیدا شده. حتی =! هم نباید استفاده بشه چون اون هم صفر رو با false یکسان درنظر میگیره و حتماً باید از ==! استفاده کنید تا علاوه بر مقدار، نوع هم بررسی بشه و فقط درصورتی که دقیقاً false برگردونده بشه، شرط اشتباه در بیاد.
-----
پاورقی: راستی، هرچند به PHP ربطی نداره ولی بهتره توی پیغام هم از exists بجای is available استفاده کنید چون exists یعنی «وجود دارد» ولی is available یعنی «در دسترس (قابل استفاده) است».
کاملا درست ! آقا ! تا حالا غلط املایی بود ! الان کلان دستور زبان فارسی ما زیر سوال رفت ! از برکات سال جدیده دیگه :دی
آخرین ویرایش به وسیله MMSHFE : جمعه 02 فروردین 1392 در 10:23 صبح دلیل: اشتباه تایپی
فقط یک نکته دیگه: آغا رو درمورد مردها به کار نمیبرن. مثال: گوهرشاد آغا - آغا محمدخان قاجار. این رو دیگه سعی کنید درست کنید چون معنای جالبی نداره
متاسفانه کد کار نکرد
<?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;
}
}
?>
استاد زا !==false استفاده میکنم جوا نمیده اما از >0 استفاده کنم مشکل حل میشه
چه کنیم ؟
باید از strpos استفاده کنید. این تابع برای جستجو سریعتره چون فقط مکان پیدا شدن رو میگه و اگه پیدا نکنه false بر میگردونه.
ممنون از شما
دوتا تاپیک دیگه زدم اگه وقت کنید ببیید ممنون میشم