str_replace не работает с вводом - PullRequest
0 голосов
/ 14 января 2020

Чтобы удалить новую строку, следующий код работает хорошо;

<?php 
  $text = "Hello \nwelcome to \ngeeksforgeeks"; 
  $text = str_replace("\n", "", $text); 
 echo $text; 
?>

ВЫВОД: Здравствуйте, добро пожаловать в geeksforgeeks.

Но когда я получаю его как ввод, он не работает;

 <form method="post">
       <label>enter string</label>&nbsp
       <input type="text" name="string"></input><br><br>
       <input type="submit" name="enter"></input>
 </form>
<?php 
    if(isset($_POST['enter']))
    {
      $text=$_POST['string'];
     $out=str_replace("\n","",$text);
      echo $out;

     }
 ?>

ВХОД: Привет \ nwelcome to \ ngeeksforgeeks;

ВЫХОД: Привет \ nwelcome to \ ngeeksforgeeks.

Скажите, пожалуйста, причину

Ответы [ 2 ]

2 голосов
/ 14 января 2020

В строке в двойных кавычках \n является escape-последовательностью, которая становится символом новой строки. Вы хотите сопоставить литерал \n в пользовательском вводе, поэтому вы должны использовать строку в одинарных кавычках, которая не обрабатывает escape-последовательности.

if(isset($_POST['enter']))
{
    $text=$_POST['string'];
    $out=str_replace('\n',"",$text);
    echo $out;
}

См. В чем разница между одиночными строки в двойных и двойных кавычках в PHP?

0 голосов
/ 14 января 2020

$ из = str_replace ( '\ п', "", $ текст); или $ out = str_replace ("\\ n", "", $ text);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...