在php中用逗号替换空格和换行符


Replace spaces and newlines with a comma in php

我搜索了一下,但找不到任何有助于的东西

所以,我有一堆数据,基本上只需要在它们之间加逗号,数据都来自记录,所以它的格式如下:

13
566
888
958
898

我需要输出它像:

13,566,888,958,898

如果我能把任何两个数字移动一个,就更好了,比如:

566,13,888,958,989

我知道它应该很简单,所以基本上我只是制作了一个表单,用GET传递它,然后从url中读取变量,然后我试图使用str_replace(",",",$outtext)用逗号替换空格,这样我就可以回显它,并快速复制它,问题是,我认为数据是用一行新行输入的,我不知道如何替换它,我试过"''n"answers"%0D%0A",但它并没有取代它,它只是用空格把它还给我。

不管怎样,这是我正在使用的代码,也许有人可以告诉我我缺少的一件简单的事情,

<?php
if (isset($_GET['intext'])) {
    $outtext=$_GET['intext'];
    $newout=str_replace(" ", ",", $outtext);
    echo $newout;
    //testing
    //echo(str_replace(" ",",","$outtext"));
}
?>

和html

<form name="indata" id="indata" method="get" action="index.php">
        <textarea id="intext" name="intext"></textarea>
        <input type="submit" id="submit" name="submit">
    </form>

我也想过把它扔到一个数组中,然后把它内爆,但已经有一段时间了,我忘了怎么做了。

如果您有换行符的"''r''n"版本,则换行符可能仍在注册-您要删除"''n"并留下"''r"。

$str = preg_replace('/'s+/',',',str_replace(array("'r'n","'r","'n"),' ',trim($str)));

更清晰的版本:

$str = preg_replace('#'s+#',',',trim($str));

正如您所说,使用数组然后内爆是一种很好的方法:

$input = trim($_GET['intext']);
$numbers = preg_split('/'s+/', $input);
echo implode(',', $numbers);

这会修剪任何填充的输入,根据空白分割成一个数组,然后用逗号内爆数组。

首先从输入中删除任何多余的空格或回车和新行,然后用逗号替换。

 <?php
  if( isset($_GET['intext']) ){
      var_dump($_GET['intext']);
      //get and trim the input
      $value = trim($_GET['intext']);
      //clean the input by removing extra white spaces
      $value = preg_replace( '/'s+/', ' ', $value );
      //replace spaces with comma
      $value = str_replace(" ", ',', $value);
      //echo output
      echo $value;
  }
 ?>
 <form name="indata" id="indata" method="get" action="">
    <textarea id="intext" name="intext"></textarea>
    <input type="submit" id="submit" name="submit">
 </form>

在*nix(我相信mac也是)系统中,您有用LF"''n"分隔的行,而在windows上,您有CR+LF"''r''n"。您可以执行str_replacepreg_replace并替换空格,CR+LF,然后是LF。您可以使用正则表达式将正则表达式中解析的任何内容替换为逗号。

显示不替换换行符的代码和字符串的源代码,也许我可以告诉你为什么它不起作用。