检查span标记之间是否有URL

时间:2012-12-24 07:23:56

标签: php regex string

我收到了一段包含以下内容的HTML代码:

<span rel="url">example.com</span>
<span rel="url">example.net.pl [SOMETHING]</span>
<span rel="url">[SOMETHING]imjustanexample.com</span> [..]

问题是,如果有办法从span标签之间获取“url”字符串。例如。它应该得到以下内容:example.comexample.net.pl(没有[SOMETHING]字符串)和imjustanexample.com

我想我必须为此目的使用正则表达式。

4 个答案:

答案 0 :(得分:0)

在javascript中试用这个正则表达式,

/((http|https):\/\/(\w+:{0,1}\w*@)?(\S+)|)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/

验证span标记中的文本

答案 1 :(得分:0)

我会这样(在正则表达式或只是PHP代码,你喜欢):

  1. 找到下一个“”
  2. 从结束到下一个(但不包括)空格或低于标志<(取其中最先出的那个)的所有内容。
  3. 重复直到不再匹配任何内容。
  4. 完成。如果正则表达式对您来说太复杂,您还可以使用字符串函数http://php.net/strings

答案 2 :(得分:0)

应该工作:

$str = '<span rel="url">http://google.ca</span>';
$match = preg_match('#<span(.*)?>((http|https|ftp)://(\S*?\.\S*?))(\s|\;|\)|\]|\[|\{|\}|,|"|\'|:|\<|$|\.\s)</span>#i', $str, $matches);
if($match)
    var_dump($matches);
else
    echo 'Nope<br />';

来自https://stackoverflow.com/a/206087/1533203

的正则表达式

答案 3 :(得分:-1)

查看Simple HTML Dom Parser(here)。

有了它,您只需访问DOM树上的元素即可。

您的问题可以通过以下方式解决:

  $html->find("span[rel=url]");

然后你可以简单地在所有元素和一些适合你需要的正则表达式上使用循环。