如何解决为什么 PHP 爆炸保持 \n?
在 Linux 下,我提交的表单包含以 \n
作为行尾的文本。这是 HTML:
<form id='frmTxt' autocomplete='off' method='post' action='index.PHP'>
<p>Paste your text:</p>
<textarea name='txt'></textarea>
<button type='submit'>Submit</button>
</form>\n";
编辑:在 PHP 中,我这样做:
$txt = explode("\n",trim($_POST['txt']));
foreach ($txt as $t) {
$words = explode(' ',$t);
foreach ($words as $w) {
echo "$w ";
}
}
Desde agosto não caía uma gota de chuva em Santiago. Ainda bem que nas torneiras — oh,leitor carioca,meu semelhante e meu irmão! — a água é abundante e limpa,e jorra à vontade para que à tardinha todo honesto cidadão possa regar suas plantas. Só na Inglaterra há gramados como no Chile,tão verdes,tão macios,tão perfeitos e lindos; o chileno trata o capim como se fossem flores.
Numa tarde vagabunda de sábado andei passeando pelo parque Balmaceda,cheio de árvores,crianças,flores e namorados. Não é proibido,felizmente,pisar na grama. É proibido colher flores e jogar bola,mas isso representa mais uma opinião das placas da Prefeitura que uma realidade humana. Aqui e ali três meninos jogam bola e uma garota colhe flores sem que o guarda,por esse motivo,perca seu bom humor. Também já fumei duas vezes no ônibus,ignorando o aviso,e ninguém me chamou a atenção; Chile,graças a Deus,é um bom país latino.
Mas falávamos de chuva; choveu. Choveu de tarde e a noite inteira,e o dia amanheceu enevoado. Depois o céu foi se limpando — e há três dias,enquanto a lua cresce,ele está azul,esplêndido,sem uma nuvem. Assim chegou o frio,ainda moderado,sem descer além dos 7 graus. Mas,com a chuva,o ar ficou mais fino e o alto cimo da Cordilheira se cobriu de neve.
É difícil contar esse lado da paisagem,esse alto horizonte,essa imensa muralha azul toucada de neve que brilha ao sol. Quando o sol vai morrendo do outro lado do horizonte,a Cordilheira começa a mudar de cor — a Montanha se faz violeta,a neve às vezes tem reflexos púrpuros ou róSEOs,o azul do céu vai se fazendo mais grave no crepúsculo alto e solene.
Santiago não tem mar; mas tem,a leste,essa presença de abismo e de infinito,essa paisagem de estranha força,pureza e paz — de uma oceânica beleza.
原文的每一段我只有一个\n
,那为什么在调用第一个explode之后它们还留在数组中?
编辑 2:
现在我更不明白了!
我将原始文件复制到 Bless Hex Editor,它在每个段落后显示一个 0A (\n)。但是,PHP 在 echo "[".strpos($t,"\n")."]";
的括号内和 echo "[".strpos($t,"\r")."]";
的数字位置中不输出任何内容。
是我的电脑出了问题还是我自己?
PS:现在 Bless 刚刚崩溃了... :(
解决方法
使用 preg_split 并运行此正则表达式:
$txt = preg_split('/\r\n|\n|\r/',$_POST['txt']);
应该有效,无论您的输入来自什么环境
,不清楚这里的问题是什么。如果我采用相同的输入:
<?php
$_POST['txt'] = <<<eof
Desde agosto não caía uma gota de chuva em Santiago. Ainda bem que nas torneiras — oh,leitor carioca,meu semelhante e meu irmão! — a água é abundante e limpa,e jorra à vontade para que à tardinha todo honesto cidadão possa regar suas plantas. Só na Inglaterra há gramados como no Chile,tão verdes,tão macios,tão perfeitos e lindos; o chileno trata o capim como se fossem flores.
Numa tarde vagabunda de sábado andei passeando pelo parque Balmaceda,cheio de árvores,crianças,flores e namorados. Não é proibido,felizmente,pisar na grama. É proibido colher flores e jogar bola,mas isso representa mais uma opinião das placas da Prefeitura que uma realidade humana. Aqui e ali três meninos jogam bola e uma garota colhe flores sem que o guarda,por esse motivo,perca seu bom humor. Também já fumei duas vezes no ônibus,ignorando o aviso,e ninguém me chamou a atenção; Chile,graças a Deus,é um bom país latino.
Mas falávamos de chuva; choveu. Choveu de tarde e a noite inteira,e o dia amanheceu enevoado. Depois o céu foi se limpando — e há três dias,enquanto a lua cresce,ele está azul,esplêndido,sem uma nuvem. Assim chegou o frio,ainda moderado,sem descer além dos 7 graus. Mas,com a chuva,o ar ficou mais fino e o alto cimo da Cordilheira se cobriu de neve.
É difícil contar esse lado da paisagem,esse alto horizonte,essa imensa muralha azul toucada de neve que brilha ao sol. Quando o sol vai morrendo do outro lado do horizonte,a Cordilheira começa a mudar de cor — a Montanha se faz violeta,a neve às vezes tem reflexos púrpuros ou róseos,o azul do céu vai se fazendo mais grave no crepúsculo alto e solene.
Santiago não tem mar; mas tem,a leste,essa presença de abismo e de infinito,essa paisagem de estranha força,pureza e paz — de uma oceânica beleza.
eof;
$txt = explode("\n",$_POST['txt']);
var_export($txt);
我得到相同的输出:
array (
0 => 'Desde agosto não caía uma gota de chuva em Santiago. Ainda bem que nas torneiras — oh,tão perfeitos e lindos; o chileno trata o capim como se fossem flores.',1 => 'Numa tarde vagabunda de sábado andei passeando pelo parque Balmaceda,é um bom país latino.',2 => 'Mas falávamos de chuva; choveu. Choveu de tarde e a noite inteira,o ar ficou mais fino e o alto cimo da Cordilheira se cobriu de neve.',3 => 'É difícil contar esse lado da paisagem,o azul do céu vai se fazendo mais grave no crepúsculo alto e solene.',4 => 'Santiago não tem mar; mas tem,pureza e paz — de uma oceânica beleza.',5 => '',)
可以看出,结果输出根本没有换行符。唯一可能的
问题是尾随的空元素,可以通过运行 trim
来修复
分割前的输入。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。