PDA

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



msdn1223
سه شنبه 20 خرداد 1393, 18:34 عصر
سلام و احترام
دوستان فرض کنید من رشته ای به این شکل دارم:

am i ? a student? yes

حالا میخوام اون قسمتی که یک علامت ؟ تنها اومده رو با الگوهای php پیدا کنم و حذف و یا جایگزین کنم، علامت سوال که قبل و بعدش کاراکتر space وجود داره
ممنون میشم دوستانی که با الگوها آشنایی دارند راهنمایی کنند

sooren_66
سه شنبه 20 خرداد 1393, 19:27 عصر
سلام و احترام
دوستان فرض کنید من رشته ای به این شکل دارم:

am i ? a student? yes

حالا میخوام اون قسمتی که یک علامت ؟ تنها اومده رو با الگوهای php پیدا کنم و حذف و یا جایگزین کنم، علامت سوال که قبل و بعدش کاراکتر space وجود داره
ممنون میشم دوستانی که با الگوها آشنایی دارند راهنمایی کنند



$string='am i ? a student? yes'
echo str_replace(' ? ','کارکتر جایگزینی',$string);

msdn1223
سه شنبه 20 خرداد 1393, 19:47 عصر
سلام و ممنون بخاطر پاسخگوییتون دوست عزیز
ببینید من یه خروجی به این شکل میاره سایتم

؟
متن عادی....
ادامه مطلب....

من هرکاری کردم متوجه نشدم این علامت ؟ از کجا وارد صفحه میشه! خط به خط مرور کردم به جایی نرسیدم
حالا اومدم قبل از پرینت صفحه این کدی که شما گذاشتی رو هم استفاده کردم
اگه هر دوطرف علامت ؟ کاراکتر فاصله بذارم که کلا پیدا نمیکنه و اگه فاصله نذارم و فقط کاراکتر ؟ رو جستجو و حذف کنم انگار همه علامات ؟ رو حذف میکنه و سایت به هم میریزه

sooren_66
سه شنبه 20 خرداد 1393, 23:01 عصر
میتونین ؟ که دو طرفش فاصله هست رو توی متغیر ذخیره کنید به صورت رشته و هر جا این علامت سوالی که دو طرفش خالی هست رو با کارکتر خالی ' ' جایگزین کنید.



$string=' ? ';
$empty='';
echo str_replace($empty,$string);

msdn1223
سه شنبه 20 خرداد 1393, 23:26 عصر
این دو تصویر رو ببینید از سورس صفحه هست:
120069

120070

تصویر اول علامتی است که من میخواهم حذف کنم، وقتی هردوطرفش فضای خالی میذارم اصلا جستجو نتیجه ای رو نداره و وقتی هم فاصله نمیذارم علامت های موجود در آدرس ها مثل تصویر 2 رو هم از بین میبره، امیدوارم متوجه منظورم شده باشید

sooren_66
سه شنبه 20 خرداد 1393, 23:41 عصر
حتما" دوطرف علامت سوال اصلا" فضای خالی نیست.و چون هیچ علامت سوالی رو که دو طرفش فضای خالی باشه پیدا نمیکنه نتیجه ای رو برنمی گردونه

msdn1223
سه شنبه 20 خرداد 1393, 23:42 عصر
بله به نظر همینطوره
ممنون

cpuram
چهارشنبه 21 خرداد 1393, 00:27 صبح
مسکن تزریق نکن سعی کن مشکل رو درست حل کنی.
راحت میتونی مشکل رو پیدا کنی. فقط کافیه سورس کدت رو بررسی کنی.
مثلا اونطور که من میبینم باید class="grid-block" رو باید توی کدت بگردی بعد داخلش رو قشنگ بررسی کن ببین چه خبره اگه نتونستی کد رو بزار.

lord_viper
چهارشنبه 21 خرداد 1393, 07:54 صبح
تو گزینه اولتون فضای خالی نیست بلکه newline همون n\ هستش نه space به همین خاطر یک خط اومده پایین

msdn1223
چهارشنبه 21 خرداد 1393, 09:16 صبح
سلام
آخه یه اسکریپتی هست که فایل هاش از کلاس های مختلف بهره میبره و خروجی میده و من اصلا نتونستم قبل از تولید خروجی اون علامت ؟ و یا چیری که باعثش میشه رو پیدا کنم، البته میدونم بهترین راه همینه.
حالا اگر بخوام در این سورس کد داخل یک کلاس و یا div خاصی رو جستجو کنم باید چیکار کنم؟ ویا اصلا اگر اینکار اصولی نیست (که مطمئنا نیست) بنظرتون باید چیکار کنم؟

cpuram
چهارشنبه 21 خرداد 1393, 09:27 صبح
سلام
آخه یه اسکریپتی هست که فایل هاش از کلاس های مختلف بهره میبره و خروجی میده و من اصلا نتونستم قبل از تولید خروجی اون علامت ؟ و یا چیری که باعثش میشه رو پیدا کنم، البته میدونم بهترین راه همینه.
حالا اگر بخوام در این سورس کد داخل یک کلاس و یا div خاصی رو جستجو کنم باید چیکار کنم؟ ویا اصلا اگر اینکار اصولی نیست (که مطمئنا نیست) بنظرتون باید چیکار کنم؟

خیلی از محیط های کد نویسی ابزار جستجو دارن که به راحتی میتونی یه کلمه رو جستجو کنی.
مثلا توی notepad++ از منوی search یه گزینه هست به نام find in files که میتونی کل پوشه رو بدی بهش و بگرده دنبالش.

msdn1223
چهارشنبه 21 خرداد 1393, 09:35 صبح
سلام
متاسفانه به این سادگی ها نیست و همه این کارها رو کردم و پیداش نکردم، بخاطر همین میخوام با کد حذفش کنم

aalmair
چهارشنبه 21 خرداد 1393, 10:08 صبح
این می تونه کمک کنه ؟



function custum_replace($str,$replace){


$size=strlen($str);
$i=0;
$ret='';

while($i<$size)
{
if($str[$i]=='?' && $i>0 && ($i+1)<$size && ord($str[$i-1]) <=32 && ord($str[$i+1]) <=32)
{
$ret .= $replace.' ';

$i++;

}else
{
$ret .=$str[$i];
}

$i++;
}

return $ret;
}



$str='am i ? a student? yes';

echo custum_replace($str,'[inserted]');

msdn1223
چهارشنبه 21 خرداد 1393, 10:27 صبح
سلام
نه متاسفانه
ببینید دوستان من به کدی نیاز دارم که اون علامت سوالی که تنهاست رو پاک کنه
یعنی قبل و بعدش هیچی نباشه، مثلا a.php?as=red ایتجا دیگه علامت سوال رو پاک نکنه، به نظر باید از الگوها و توابع preg_replace و ... باید استفاده کرد ولی من با الگوهای پیچیده آشنا نیستم و اینو نتونستم بنویسم

aalmair
چهارشنبه 21 خرداد 1393, 10:35 صبح
سلام
نه متاسفانه
ببینید دوستان من به کدی نیاز دارم که اون علامت سوالی که تنهاست رو پاک کنه
یعنی قبل و بعدش هیچی نباشه، مثلا a.php?as=red ایتجا دیگه علامت سوال رو پاک نکنه، به نظر باید از الگوها و توابع preg_replace و ... باید استفاده کرد ولی من با الگوهای پیچیده آشنا نیستم و اینو نتونستم بنویسم

درسته . امتحانش بکن