0

我正在学习 PHP,我制作了一个简单的查找和替换脚本,但它似乎只适用于字符串中 0 位置之后的字符。

这是脚本:

 <?php

 $offset= 0;

 if( isset ($_POST['text']) && isset($_POST['search']) && isset($_POST['replace'])   ){


 $text = $_POST['text'];
  $search = $_POST['search'];
  $replace = $_POST['replace'];

  $searchlength = strlen($search);



   if (!empty($text) && !empty($search) && !empty($replace)){

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

    }else{

echo'Please fill in something';
   }


 }




  ?>
 <hr>
 <form action= "index.php" method = "POST">

<textarea name= 'text' rows= '20' cols = '20'></textarea><br>
Search for:<br>
<input type='text' name ='search'><br>
Replace with:<br>
<input type='text' name ='replace'><br>
<input type='submit' value='find and replace'>

  </form>

无论我做什么,我都无法替换字符串中的第一个字符或第一个单词。

4

1 回答 1

2
while ($strpos = strpos($text, $search, $offset)) {

应该

while (FALSE !== ($strpos = strpos($text, $search, $offset))) {

对于第一个字符,$strpos等于 0,因此while循环永远不会开始。

于 2013-07-13T15:43:02.210 回答