11

我搜索但找不到任何有用的东西

所以,我有一堆数据,我需要基本上只是把逗号放在中间,数据都来自记录,所以它像:

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

4 回答 4

19

如果您有换行符的“\r\n”版本,则换行符仍可能正在注册 - 您正在删除“\n”并将“\r”留在后面。

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

更清晰(更清晰)的版本:

$str = preg_replace('#\s+#',',',trim($str));
于 2013-07-24T15:16:02.403 回答
4

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

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

这会修剪任何填充的输入,根据空格拆分为一个数组,然后用逗号对数组进行内爆。

于 2013-07-24T15:17:12.267 回答
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>
于 2013-07-24T15:34:23.307 回答
0

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

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

于 2013-07-24T15:24:42.223 回答