Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检查是否存在';在span标记之间有一个URL_Php_Regex_String - Fatal编程技术网

Php 检查是否存在';在span标记之间有一个URL

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

我得到了一个包含以下内容的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]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 />';