在php中创建查找和替换应用程序

在php中创建查找和替换应用程序,php,html,Php,Html,我有一个php代码: <?php $offset=0; if(isset($_POST['text']) && isset($_POST['searchfor']) && isset($_POST['replacewith'])) { $text=$_POST['text']; $search=$_POST['searchfor']; $replace=$_POST['replacewith']; $search_length=strlen($search)

我有一个php代码:

<?php
$offset=0;
if(isset($_POST['text']) && isset($_POST['searchfor']) && isset($_POST['replacewith']))
{
$text=$_POST['text'];
$search=$_POST['searchfor'];
$replace=$_POST['replacewith'];
$search_length=strlen($search);
    if(!empty($text)&&!empty($search)&&!empty($replace))
    {
        while($strpos=strpos($text,$search,$offset))
        {

        $offset=$strpos + $search_length;
        $text=substr_replace($text,$replace,$strpos,$search_length);

        }
        echo $text;

    }
    else
    {
    echo 'pls fill in all fields';
    }
}

?>
<form action='string_search.php' method='POST'>
<textarea name='text' rows='6' cols='30'></textarea><br><br>
Search For:
<input type='text' name='searchfor'><br><br>
Replace with:
<input type='text' name='replacewith'><br><br>
<input type='submit' value='find and replace'>
</form>



搜索:

替换为:

当我键入字符串时。例如,在文本区域中“我找到了我的狗”,在“搜索”中搜索“狗”,然后在“替换”中替换为“猫”,然后提交它将输出“我找到了我的猫”。但是它总是输出原始字符串(“我找到了我的狗”)。我不知道为什么

您为什么使用:

while($strpos=strpos($text,$search,$offset)) {
    $offset=$strpos + $search_length;
    $text=substr_replace($text,$replace,$strpos,$search_length);
}
echo $text;
?

我认为如果你只是使用:

$strpos=strpos($text,$search);
$text=substr_replace($text,$replace,$strpos,$search_length);
echo $text;
而且可能是你在做坏事。我不知道,这是个建议。这样,您的代码就可以工作了。


<?php 

$offset = 0;

if (isset($_POST['user_input_box']) && isset($_POST['search']) &&  isset($_POST['replace'])) {
    
    $user_input_box = $_POST['user_input_box'];
    $search = $_POST['search'];
    $replace =$_POST['replace'];

//To check whether above code work or not

    //  echo $user_input_box = $_POST['user_input_box'];
    //  echo $search = $_POST['search'];
    //  echo $replace = $_POST['replace'];

$search_length = strlen($search);

if (!empty($_POST['user_input_box']) && !empty($_POST['search']) &&  !empty($_POST['replace'])) {
    
while ($string_position=strpos($user_input_box, $search ,$offset)) {


搜索:


替换为:



欢迎来到StackOverflow。虽然这段代码可以解决这个问题,但如何以及为什么解决这个问题将真正有助于提高您的帖子质量,并可能导致更多的投票。请记住,你是在将来回答读者的问题,而不仅仅是现在提问的人。请在回答中添加解释,并说明适用的限制和假设。
        // echo $string_position."<br>";
        // echo $offset = $string_position + $search_length;
        
         $offset = $string_position + $search_length;
         $user_input_box = substr_replace($user_input_box, $replace,$string_position,$search_length );
}
echo $user_input_box;
            }

else{
    echo "Please fill the complete fields.";
}

}
 ?>

 <form method="POST" action="eleven0.php">
    
    <textarea cols="34" rows="12" name="user_input_box"></textarea>
<br><br>
    <label>Search For: </label> <br>
    <input type="text" name="search"><br><br>
    <label>Replace With: </label><br>
    <input type="text" name="replace"><br><br>

    <input type="submit" value="Find and Replace">
 </form>