【问题标题】:How to convert space or new line in textarea to a comma delimted PHP array如何将 textarea 中的空格或换行符转换为逗号分隔的 PHP 数组
【发布时间】:2018-04-15 09:49:30
【问题描述】:

我正在尝试为我的数组获得类似 a,b,c,d 的结果 在 textarea 字段中添加任何格式

$mydomain = htmlspecialchars($_POST['domainlist']);
$domainlist = preg_replace('/\s+/', '', $mydomain);
$domainlist = preg_replace('#\s+#',',',trim($str));
$domainlist = explode(',', $mydomain);


$keyword = $_POST["keyword"]; 
foreach($domainlist as $domain) {
    $file = file_get_contents('http://' . $domain);
    $searchnum = $keyword ; 

    if (stripos($file, $searchnum) !== false) { 
        echo 'record found on '   .$domain. '<br/>';
    } 
    else {
        echo 'record not found ' .$domain.  ' <br/>';
    }
}

例如(注意多余的空白)

用户添加

a,b  , c, d

or

a     b     c     d

or 

a

b

c

d

将所有结果都归结为

a,b,c,d

删除多余的空格,将新行转换为逗号,或将空格转换为逗号并删除多余的空格

有什么想法吗?

【问题讨论】:

  • 我认为你是打算创建一个数组还是一个字符串并不完全清楚。

标签: javascript php html arrays


【解决方案1】:

由于您希望数组循环,您可以使用preg_split 拆分您想要的字符,使用PREG_SPLIT_NO_EMPTY 将消除任何额外内容。那么就不用explode了:

$domainlist = preg_split('/[ ,\n\r]/', $mydomain, null, PREG_SPLIT_NO_EMPTY);

【讨论】:

  • 最后一个问题,是否可以检测到是否添加了 http:// 我想替换为什么都没有,因为当用户添加 http:// 时出现错误,所以用户加不加http都是一样的
  • str_replace 需要数组所以$domainlist = str_replace('http://', '', $domainlist);
【解决方案2】:

您也可以使用str_replace 来查找空格和换行符。但我会建议使用上述的preg_replace 函数。

$mydomain = htmlspecialchars($_POST['domainlist']);
$domainlist = preg_replace(['/[\s]+/','/[\n]+/'], ",", $mydomain);

$domainlist = explode(',', $mydomain);

结果:http://sandbox.onlinephpfunctions.com/code/af212f55156ee5770a62adc4c5c70ae820e9c2df

【讨论】:

  • 虽然此代码可能会回答问题,但提供有关此代码为何和/或如何回答问题的额外上下文可提高其长期价值。 好的答案将始终解释所做的事情以及为什么以这种方式完成,不仅是为了 OP,也是为了 SO 的未来访问者。跨度>
猜你喜欢
  • 2010-11-22
  • 2019-04-28
  • 2020-05-21
  • 2011-06-18
  • 2019-05-19
  • 2016-02-08
  • 1970-01-01
相关资源
最近更新 更多