【问题标题】:php reading in strings from text areaphp从文本区域读取字符串
【发布时间】:2013-02-08 00:54:29
【问题描述】:
$data = explode("\n", trim($_GET['names']));
while($i < count($data)) {
  if(!in_array($data[$i], $unique_names)){
    $unique_names[] = $names[$i];
   }
   $i = $i + 1;
 }

我正在尝试使用此 php 代码仅接受来自 textarea 的唯一结果。它不起作用,因为每个字符串都有一个额外的空格,除了最后一个。

I.E. “杰夫” “弗雷德” “账单 ” “杰夫”

所以 jeff 将被添加两次。

我的问题是: 我如何摆脱那个空间?我试过修剪,它不会按预期执行。

【问题讨论】:

  • 您没有在 for 循环中增加 $i,因此您的代码甚至不应该终止。
  • 我在我的实际代码中。对不起

标签: php string textarea


【解决方案1】:

首先,您不需要手动查找唯一值,您可以使用array_unique()。其次,trim() 不适用于数组。

试试:

$raw_names = explode("\n", $_GET['names']);
$trimmed_names = array_map('trim', $raw_names);
$unique_names = array_unique($trimmed_names);

【讨论】:

  • 我更新它以在数组元素上使用 trim,但它仍然没有按预期执行
  • 那你还是做错了。你试过我的代码吗?此外,你永远不应该有一个名为$data 的变量。这不是很具有描述性。
  • 最后一次更新没用……我知道……我的实际代码有描述性变量名
  • 那么其他地方出了点问题,弗拉德。我的代码没有任何问题。如果您发布实际代码,跟踪错误会更容易。
  • 有一个额外的空单元格
【解决方案2】:

使用trim(string) 删除开头和结尾的空格。 http://php.net/manual/en/function.trim.php

【讨论】:

  • 你必须先爆炸,然后再修剪。
【解决方案3】:

灵感来自kba

$data = explode("\n", trim($_GET['names']));
foreach ($data as &$e) {
    $e = trim($e);
}
$unique_names = array_unique($data);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多