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

时间:2013-07-24 15:12:53

标签: php

我搜索但找不到任何帮助

所以,我有一堆数据我需要基本上只用逗号,数据都来自记录所以它来自:

13
566
888
958
898

我需要输出它:

13,566,888,958,898

如果我可以移动任何2位数字,那就更好了:

566,13,888,958,989

我知道它应该非常简单,所以基本上我只是创建了一个表单,用GET传递然后从url读取变量,然后我尝试使用str_replace(“”,“,”,$ outtext )用逗号替换空格,这样我就可以回复它,并且只是快速地复制它,问题是,我认为数据带有一个新行,我不知道如何替换它,我试过了“\ n”和“%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>

我还想过将它扔进一个阵列并将其摧毁,但它已经有一段时间了,我忘记了怎么做。

4 个答案:

答案 0 :(得分:15)

如果您有换行符的“\ r \ n”版本,换行符仍然可以注册 - 您要删除“\ n”并留下“\ r \ n”。

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

清洁(更易读)版本:

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

答案 1 :(得分:4)

如你所说,使用阵列然后爆炸是一种很好的方法:

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

这会修剪任何填充的输入,基于空格分割成数组,然后用逗号破坏数组。

答案 2 :(得分:2)

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

 <?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>

答案 3 :(得分:0)

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

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