-1

我得到一个包含以下内容的 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.com, example.net.pl(不带[SOMETHING]字符串)和imjustanexample.com.

我想我将不得不为此使用正则表达式。

4

4 回答 4

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

于 2012-12-24T22:46:08.637 回答
0

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

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

验证 span 标签中的文本

于 2012-12-24T07:39:03.800 回答
0

我会这样(无论是在正则表达式还是只是 PHP 代码,就像你喜欢的那样):

  1. 找到下一个“”
  2. 从它的末端取出所有东西,直到下一个(但不包括)空格或低于符号<(以先到者为准)。
  3. 重复直到不再匹配。

完毕。如果正则表达式对您来说太复杂,您还可以使用字符串函数http://php.net/strings

于 2012-12-24T09:30:49.127 回答
-1

查看简单的 HTML Dom 解析器(此处)。

有了它,您可以简单地访问 DOM 树上的元素。

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

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

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

于 2012-12-24T07:38:15.730 回答