![](/img/trans.png)
[英]In PHP, how do I extract multiple e-mail addresses from a block of text and put them into an array?
[英]How do I extract info from a block of URLs in php?
我有一个网址列表,可以以任何格式输入。 每行一个,用逗号分隔,中间有随机文本,依此类推。URL都来自两个不同的站点,并且结构相似
对于此示例,可以说它看起来像这样
Random Text - http://www.domain2.com/variable-value
Random Text 2 - http://www.domain1.com/variable-value, http://www.domain1.com/variable-value, http://www.domain1.com/variable-value
http://www.domain1.com/variable-value
http://www.domain2.com/variable-value
http://www.domain1.com/variable-value http://www.domain2.com/variable-value http://www.domain1.com/variable-value
我需要提取2条信息。 检查其domain1或domain2以及“ variable-”后面的值
因此,它应该创建一个多维数组,其中将包含2个项目:域+值。
最好的方法是什么?
这是提取URL的可能性。 唯一的问题是网址本身可能不包含逗号。 所以如果足够...
$lines = explode('\n', $urls);
for($i = 0; $i < sizeof($lines); $i++)
{
if(preg_match_all("http:\\/\\/[^,]*variable-([^,]+)", $lines[$i], $matches))
{
}
}
顺便说一下...匹配项存储在$matches
数组中。
PS:已编辑...我忘了转义反斜线,您应该在字符串行中搜索行以确保行为正确...在http://www.regex-tester.de/regex.html上测试正则表达式。 。刚用我的正则表达式解决了。
PPS:经过进一步研究,我找到了以下页面: http : //internet.ls-la.net/folklore/url-regexpr.html 。 它包含网址的正则表达式。 您可以使用它首先提取URL,然后在第二步中浏览URL并提取变量信息以查找例如variable-([\\W]+)
。
preg_split , preg_match , parse_url
// split urls
$urls = preg_split('!,\s+!', 'http://www.domain1.com/variable-value, http://www.domain2.com/variable-value, http://www.domain3.com/variable-value');
// check for domain and path variable
foreach ($urls as $url) {
$parts = parse_url($url);
// check domain: $parts['host'];
$matches = array();
// check path: preg_match('!^/variable-([^/]+)!', $parts['path'], $matches)
}
$text = "http://www.domain1.com/variable-value1, http://www.domain2.com/variable-value2 http://www.domain1.com/variable-value3";
preg_match_all("/http:\\/\\/(.+?)\\/variable-([a-z0-9]+)/si", $text, $matches);
print_r($matches);
结果:
Array
(
[0] => Array
(
[0] => http://www.domain1.com/variable-value1
[1] => http://www.domain2.com/variable-value2
[2] => http://www.domain1.com/variable-value3
)
[1] => Array
(
[0] => www.domain1.com
[1] => www.domain2.com
[2] => www.domain1.com
)
[2] => Array
(
[0] => value1
[1] => value2
[2] => value3
)
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.