Php 如何将多个URL从文本字段传递到数组中
我试图从文本字段中输入多个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
<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