我搜索但找不到任何帮助
所以,我有一堆数据我需要基本上只用逗号,数据都来自记录所以它来自:
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>
我还想过将它扔进一个阵列并将其摧毁,但它已经有一段时间了,我忘记了怎么做。
答案 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_replace
或preg_replace
并替换空格,CR + LF然后替换LF。您可以使用正则表达式用逗号替换正则表达式中解析的任何内容。
显示不替换换行符的代码和字符串的来源,也许我可以告诉你它为什么不起作用。