Php 如何将多个URL从文本字段传递到数组中

Php 如何将多个URL从文本字段传递到数组中,php,arrays,Php,Arrays,我试图从文本字段中输入多个URL作为输入,输入到数组中以提取一些数据 这是我的密码 <form method="post"> <textarea name="urls[]" cols="150" rows="15" value=""></textarea> <input type="submit" value="Get URLs" /> </form> 我可以提取数据(电子邮件) 如何处理多个条目 您正在通过此语法在$data

我试图从文本字段中输入多个URL作为输入,输入到数组中以提取一些数据

这是我的密码

<form method="post">
  <textarea name="urls[]" cols="150" rows="15" value=""></textarea>
  <input type="submit" value="Get URLs" />
</form>
我可以提取数据(电子邮件)


如何处理多个条目

您正在通过此语法在
$data array
中传递
一个值

替换
$data=array($value)

这将把每个新的
附加到
数据数组

另外,您有一个文本区域,这意味着它的值(文本输入)作为数组
url[]
的第一个值进入
name=url[]
。在PHP中,您将得到一个值

如果要分离输入的数据,需要将其拆分。例如,如果要编写逗号分隔的输入,则至少需要将
分解(“,”,$\u POST[“url”];)
。顺便说一下,将
name=“url[]”
更改为简单的
name=“url”

使用以下代码检索逗号分隔的输入:

<form method="post">
  <textarea name="urls" cols="150" rows="15" value=""></textarea>
  <input type="submit" value="Get URLs" />
</form>
据我所知,您的
multiRequest()
函数应该处理
$data
数组,请将此行置于
foreach
循环之外。如果您不愿意,您将处理每个循环的
$data
数组


注意:在这种情况下,输入应该用逗号分隔(在textarea中)。

如果您用换行符分隔URL,我们可以拆分并处理它们:

<form method="post">
    <textarea name="urls" cols="150" rows="15" value=""></textarea>
<input type="submit" />
输入:

http://example.com
mailto://foo@example.com
将输出:

foo@example.com
if (isset($_POST['urls']) && !empty($_POST['urls'])) {
  // fetch data from specified url

    $inputs = explode(",",$_POST["urls"]);
    $data = array(); 
    foreach($inputs as $key => $value){ 
        $data[] = $value;
    }
    $r = multiRequest($data);
}
<form method="post">
    <textarea name="urls" cols="150" rows="15" value=""></textarea>
<input type="submit" />
<?php
$urls = $_POST['urls'] ?? '';
$urls = preg_split('@\R@', $urls);
$emails = [];
foreach ($urls as $url)
{
    $pattern = '/[a-z0-9]+[_a-z0-9\.-]*[a-z0-9]+@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})/i';
    if (preg_match_all($pattern, $url, $matches))
    {
        foreach(array_unique($matches[0]) as $email) {
            $emails[] = $email;
        }
    }
}

if(empty($emails)) {
    echo 'No emails found.';
} else {
    print implode('<br>', $emails);
}
http://example.com
mailto://foo@example.com
foo@example.com