Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.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 用于过滤“在http之前出现”的正则表达式_Php_Regex - Fatal编程技术网

Php 用于过滤“在http之前出现”的正则表达式

Php 用于过滤“在http之前出现”的正则表达式,php,regex,Php,Regex,为使网站嵌入成为可能,以下行检查是否存在http://或https:// 我想区分图像嵌入和普通网站的嵌入。如果您有HTML源代码,那么您需要使用HTML解析器。解析器将允许您区分标记和文本,然后您可以将转换仅应用于文本 如果您按原样尝试,那么您还必须担心URL在HTML中的所有使用方式。前面的双引号无法找到所有URL。您需要使用断言 \b(?<!")https?:\/\/[^\s()<>]+(?:\([\w\d]+\)|[^[:punct:]\s]|\/) ^^^^^^

为使网站嵌入成为可能,以下行检查是否存在http://或https://


我想区分图像嵌入和普通网站的嵌入。

如果您有HTML源代码,那么您需要使用HTML解析器。解析器将允许您区分标记和文本,然后您可以将转换仅应用于文本

如果您按原样尝试,那么您还必须担心URL在HTML中的所有使用方式。前面的双引号无法找到所有URL。

您需要使用断言

\b(?<!")https?:\/\/[^\s()<>]+(?:\([\w\d]+\)|[^[:punct:]\s]|\/)
  ^^^^^^

PHP


谢谢。但如果在http之前,您的正则表达式似乎表示是?如果不在http之前,我的意思是是是。抱歉,我必须在我的描述中更加明确。@user42459嗯,您可能的输入字符串和所需的输出是什么?哦,抱歉,我想不起来了。尝试几次后,它似乎可以工作。谢谢!
<img src="http://~~~.jpg">
\b(?<!")https?:\/\/[^\s()<>]+(?:\([\w\d]+\)|[^[:punct:]\s]|\/)
  ^^^^^^
$regex = '/\b(?<!")https?:\/\/[^\s()<>]+(?:\([\w\d]+\)|[^[:punct:]\s]|\/)/';
$links = 'http://www.test.com
"http://www.test.com"';
preg_match_all($regex, $links, $matches);
print_r($matches);