我搜索了一下,但找不到任何有助于的东西
所以,我有一堆数据,基本上只需要在它们之间加逗号,数据都来自记录,所以它的格式如下:
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_replace
或preg_replace
并替换空格,CR+LF,然后是LF。您可以使用正则表达式将正则表达式中解析的任何内容替换为逗号。
显示不替换换行符的代码和字符串的源代码,也许我可以告诉你为什么它不起作用。