Php 检查是否存在';在span标记之间有一个URL
我得到了一个包含以下内容的HTML代码:Php 检查是否存在';在span标记之间有一个URL,php,regex,string,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> [..] example.com example.net.pl[某物] [SOMETHING]imjust
<span rel="url">example.com</span>
<span rel="url">example.net.pl [SOMETHING]</span>
<span rel="url">[SOMETHING]imjustanexample.com</span> [..]
example.com
example.net.pl[某物]
[SOMETHING]imjustanexample.com[…]
问题是,是否有办法从span
标记之间获取“url”字符串。例如,它应该得到以下内容:example.com
、example.net.pl
(不带[SOMETHING]
字符串)和imjustanexample.com
我想我必须为此使用正则表达式。查看简单的HTML Dom解析器() 使用它,您可以简单地访问DOM树上的元素 您的问题可以通过以下方式解决:
$html->find("span[rel=url]");
然后,您可以在所有元素上使用一个循环和一些适合您需要的正则表达式。试试javascript中的正则表达式
/((http|https):\/\/(\w+:{0,1}\w*@)?(\S+)|)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
要验证span标记中的文本,我会这样做(使用正则表达式或PHP代码,如您所愿):
或低于符号的地方取所有东西这应该可以:
$str='1〕http://google.ca';
$match=preg|u match('|((http | https | ftp):/(\S*?\。\S*?)(\S |\)\preg|u match('.'ftp:/)(\S | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 124
be?和example.com
不是url!url是http://example.com/
@Jack我知道![某物]
可以是任何字符串-实际上不带括号。
$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 />';