PDA

View Full Version : سوال: سرچ کلمه ای در یک جمله و replace کردن



***BiDaK***
جمعه 02 تیر 1391, 02:03 صبح
با سلام...این کد ایرادایی داره..لطفا ایراداشو بگید تا بدونم مشکل کارم کجا بوده..ممنون


<?php
if (isset($_POST['user_input']) && isset($_POST['user_search']) && isset($_POST['user_replace']))
{
$user_input = $_POST['user_input'];
$find = $_POST['user_search'];
$replace = $_POST['user_replace'];
//echo str_replace($replace , $find , $user_input);
$offset = 0;
$find_length = strlen($find);
if (!empty($_POST['user_input']) && !empty($_POST['user_search']) && !empty($_POST['user_replace']))
{
while ($string_position=strpos($user_input,$find,$offset ))
{
//echo $find.' found at '.$string_position.'<br>';
$offset = $string_position + $find_length;
$text = substr_replace($user_input,$replace,$string_positi on,$find_length);

}
echo $text;
}
}
?>
<form action="42.Creating a Find and Replace Application.php" method="post">
<textarea name="user_input" rows="6" cols="30"><?php echo $user_input ?></textarea>
<br /><br />
Search<br>
<input type="text" name="user_search" /><br />
<br />
Replace<br>
<input type="text" name="user_replace" /><br />
<br />
<input type="submit" value="Submit" />
</form>

Cyletech
جمعه 02 تیر 1391, 10:02 صبح
اولین ایراد اینه که شما نباید وقتی متغیری داری مقدارش رو به متغیر دیگه اختصاص بدی. اینطوری فضای بیشتری اشغال میشه. منظورم این $user_input = $_POST['user_input']; و امثال اینه.

واسه کامنت های یه خطی که توضیح داری میدی از شارپ # استفاده کن.

این رو درست کن $string_positi on فاصله بین on و حروف قبلیش افتاده

در نهایت برای اینکه در یک جمله سرچ کنی و مچ شده رو جایگزین با چیزی کنی باید از تابع str_replace استفاده کنی.
http://php.net/manual/en/function.str-replace.php

***BiDaK***
جمعه 02 تیر 1391, 11:32 صبح
اولین ایراد اینه که شما نباید وقتی متغیری داری مقدارش رو به متغیر دیگه اختصاص بدی. اینطوری فضای بیشتری اشغال میشه. منظورم این $user_input = $_POST['user_input']; و امثال اینه.

واسه کامنت های یه خطی که توضیح داری میدی از شارپ # استفاده کن.

این رو درست کن $string_positi on فاصله بین on و حروف قبلیش افتاده

در نهایت برای اینکه در یک جمله سرچ کنی و مچ شده رو جایگزین با چیزی کنی باید از تابع str_replace استفاده کنی.
http://php.net/manual/en/function.str-replace.php
سلام ممنون..ولی بازم یک کلمه جایگزین میکنه و اگر سه کلمه مثل هم باشه آخرین کلمشو replace میکنه..و به دو تای دیگه کار نداره..
اتفاقا اول از str_replace استفاده کردم واسه این مدل ولی اصلا جایگزین نکرد..

***BiDaK***
جمعه 02 تیر 1391, 11:50 صبح
مشکلو پیدا کردم باید بجای $text همون $user_input میذاشتم...
ولی یه مشکل دیگه که هس بخاطر اینکه بین تکست باکس دستور اکو نوشتم توو تکست باکس این متن چاپ میشه هر سری که هی باید پاکش کنم واسه وارد کردن متن..مشکل کجاس؟

<br />
<font size='1'><table class='xdebug-error' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Notice: Undefined variable: input in C:\wamp\www\Prac\42.Creating a Find and Replace Application.php on line <i>25</i></th></tr>
<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0012</td><td bgcolor='#eeeeec' align='right'>676960</td><td bgcolor='#eeeeec'>{main}( )</td><td title='C:\wamp\www\Prac\42.Creating a Find and Replace Application.php' bgcolor='#eeeeec'>..\42.Creating a Find and Replace Application.php<b>:</b>0</td></tr>
</table></font>

MMSHFE
جمعه 02 تیر 1391, 11:53 صبح
میشه کدی که با str_replace نوشته بودین رو بگذارین؟

***BiDaK***
جمعه 02 تیر 1391, 12:11 عصر
میشه کدی که با str_replace نوشته بودین رو بگذارین؟
تو متن برنامه همون اول نوشته بودم که چون اجرا نشد کامنتش کردم..توو پست اول هست..

//echo str_replace($replace , $find , $user_input);
ولی جالبه الان تست کردم درست کار کردhttp://www.freesmile.ir/smiles/869919_leer.gifتعجبم چرا همون موقع اول اجرا نمیکرد.
حالا راهکاری واسه سوال پست قبلیم دارید؟http://www.freesmile.ir/smiles/366219_4plnvbq.gif

MMSHFE
جمعه 02 تیر 1391, 18:15 عصر
اون خطایی که گذاشتین، داره میگه متغیری به اسم input$ وجود نداره. کدتون رو بررسی کنید و این متغیر رو که داخل textarea گذاشتین، چک کنین و اگه قبلاً تعریف نشده، به شکل درست تعریفش کنید.