-1

我有一个 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>

当我输入一个字符串时。例如,在 textarea 中“我找到我的狗”并在“搜索”中搜索“狗”,然后在“替换”中替换为“猫”,然后提交它会输出“我找到我的猫”。但是它总是输出原始字符串('我找到了我的狗')。我不知道为什么?

4

2 回答 2

0

你为什么使用:

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;

做坏事的可能是你的时间。我不知道,这是一个建议。有了这个,您的代码应该可以工作。

于 2013-05-24T16:51:12.303 回答
0
<?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)) {

// to check while and strpos

        // 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>
于 2020-11-01T10:11:30.120 回答