$resource = "THIS IS ABOUT WWW.JONAKCOMPUTERS.COM, HTTP://HIGHLOW.COM, AND TESTINGSERVER1.COM"
我想把这三个网址拉成另一个类似于:
的字符串 $all_urls = "JONAKCOMPUTERS.COM - HIGHLOW.COM - TESTSERVER1.COM
我是由其他人发现的:
$pattern = '#(www\.|https?:\/\/){1}[a-zA-Z0-9]{2,}\.[a-zA-Z0-9]{2,}(\S*)#i';
preg_match_all($pattern, $string, $matches, PREG_PATTERN_ORDER);
但它不会仅仅将“jonakcomputers.com”拉为“http:// url”或“www.url”
对不起,我只是想清楚它最后不区分大小写。我可以随时把它弄清楚。我需要在页面加载之前执行此操作,因此它可能是javascript或php。
如果我能拔出一个,我想我可以做一个循环来继续检查新的,直到它耗尽。
感谢愿意帮忙的人。
答案 0 :(得分:2)
我在控制台中运行您的代码,只调整最后一个代码段中的变量名称,以便:
php > $resource = "THIS IS ABOUT WWW.JONAKCOMPUTERS.COM, HTTP://HIGHLOW.COM, AND TESTINGSERVER1.COM"
php > $pattern = '#(www\.|https?:\/\/){1}[a-zA-Z0-9]{2,}\.[a-zA-Z0-9]{2,}(\S*)#i';
php > preg_match_all($pattern, $resource, $matches, PREG_PATTERN_ORDER);
php > var_dump($matches);
array(3) {
[0]=>
array(2) {
[0]=>
string(23) "WWW.JONAKCOMPUTERS.COM,"
[1]=>
string(19) "HTTP://HIGHLOW.COM,"
}
[1]=>
array(2) {
[0]=>
string(4) "WWW."
[1]=>
string(7) "HTTP://"
}
[2]=>
array(2) {
[0]=>
string(1) ","
[1]=>
string(1) ","
}
}
你在preg_match返回中看到的是一个带有以下内容的多维数组:
0:完全匹配
1:SubPattern 1匹配
2:SubPattern 2匹配
我看到的唯一解决方案是你需要稍微调整一下RegExp以解决缺少ww或http的问题。所以只需将它用于模式:
$pattern = '#(www\.|https?:\/\/)?[a-zA-Z0-9]{2,}\.[a-zA-Z0-9]{2,}(\S*)#i';
并且您的$匹配现在应该包含全部3个。
答案 1 :(得分:0)
目前的正则表达式完全依赖于初始的www或http来查找网址。如果你想抓住那些不完整的网址,你首先需要定义你想要的东西。
例如,您只是在寻找以.com结尾的内容,还是需要获取“jonakcomputers.br”?
答案 2 :(得分:0)
我想为讨论做出贡献,因为它帮助我找到了这个解决方案。其他可能像我一样运行相同谷歌查询的人可能会遇到同样的问题。
我需要一段正则表达式代码来遍历文本中的每个url,清理它并用css类标记它(对于jQuery版本的嵌入)
此函数接收文本,迭代它找到的每个URL(使用Kai发布的RegExp)
function find_urls($text)
{
$ret = '';
// The Regular Expression filter
$pattern = '#(www\.|https?:\/\/)?[a-zA-Z0-9]{2,}\.[a-zA-Z0-9]{2,}(\S*)#i';
preg_match_all($pattern, $text, $matches);
if (sizeof($matches) > 0)
{
foreach($matches[0] as $match)
{
if(strrpos($match,'http://') === false)
{
$url = '<a class="embedly" target="_blank" href="http://'.$match.'">'.$match.'</a> ';
}
else
{
$url = '<a class="embedly" target="_blank" href="'.$match.'">'.$match.'</a> ';
}
$text = str_replace($match,$url,$text);
}
}
return $text;
}