Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.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 url中特定模式的预匹配?_Php_Html Parsing_Preg Match - Fatal编程技术网

Php url中特定模式的预匹配?

Php url中特定模式的预匹配?,php,html-parsing,preg-match,Php,Html Parsing,Preg Match,我想在PHP中使用preg_match来测试URL的格式。URL如下所示: <a href='http://~dead host~/vypdye57f25o' rel='nofollow' target='blank'>part-2</a> 老实说,我不知道如何进行比赛,但我的目标是 以开始的模式我并不完全清楚您的文本是什么样子,以及您想要匹配的内容,但我会尽我最大的努力使其正确 基本上,我在这里做的是寻找一个开始链接标签,如果你只想匹配url的话 $text="&

我想在PHP中使用
preg_match
来测试URL的格式。URL如下所示:

<a href='http://~dead host~/vypdye57f25o' rel='nofollow' target='blank'>part-2</a>

老实说,我不知道如何进行比赛,但我的目标是


开始的模式我并不完全清楚您的文本是什么样子,以及您想要匹配的内容,但我会尽我最大的努力使其正确


基本上,我在这里做的是寻找一个开始链接标签,如果你只想匹配url的话

$text="<a href='http://~dead host~/vypdye57f25o' rel='nofollow' target='blank'>part-2</a>";

 preg_match_all("/http:\/\/ ## starting from http://
 ~dead\shost~   ## along with http:// match ~dead host~
 [^\"']         ## upto singlequote or doublequote  
 +              ## one more character  
 /mx",$text,$matches);   //  m - multiple line x - include to commentary inside patterns
 print_r($matches);
$text=”“;
preg_match_all(“/http:\/\/\\\\\\\ \”从http开始://
~dead\shost~###以及http://match~dead host~
[^\“']##最多单引号或双引号
+再来一个角色
/mx“,$text,$matches);//m-多行x-包含到模式内的注释
打印(匹配项);

工作

如果您正在处理HTML数据,最好使用
DOM
。感谢您的建议,但preg_match将是最好的选择是的,您是对的,当您使用大量数据时非常有用。在我的情况下,我有10个大约包含~dead host~字符串的链接,经过仔细考虑后,我决定preg_match将是最好的选择这就是我为什么要写它的原因。我看到了你的回复。首先,我很惊讶。这太简短和完整了。我不确定,但我声称,如果我付钱给某人,没有人可以像你写的那样写。这段代码是完整的,我按照我的想法工作。不需要任何更改附言:如果有100个链接,你知道吗?其中一半像字符串(在preg-match上面),我想用空格代替。例如,是的,这很容易。你不用
preg-match
,而是用
preg-replace
。我对上面的代码进行了编辑,向你展示了如何操作。
%   <a   [^>]*?   ~dead host~   .*?   </a>   %   i
^    ^      ^          ^         ^      ^    ^   ^
1    2      3          4         5      6    7   8
$string = " 

<a href='http://~dead host~/vypdye57f25o' rel='nofollow' target='blank'>part-2</a><a href='http://stackoverflow.com' rel='nofollow' target='blank'>part-2</a><a href='http://stackoverflow.com' rel='nofollow' target='blank'>part-2</a><a href='http://stackoverflow.com' rel='nofollow' target='blank'>part-2</a><a href='http://stackoverflow.com' rel='nofollow' target='blank'>part-2</a><a href='http://~dead host~/vypdye57f25o' rel='nofollow' target='blank'>part-2</a><a href='http://~dead host~/vypdye57f25o' rel='nofollow' target='blank'>part-2</a><a href='http://~dead host~/vypdye57f25o' rel='nofollow' target='blank'>part-2</a><a href='http://~dead host~/vypdye57f25o' rel='nofollow' target='blank'>part-2</a><a href='http://~dead host~/vypdye57f25o' rel='nofollow' target='blank'>part-2</a>
<a href='http://stackoverflow.com' rel='nofollow' target='blank'>part-2</a><a href='http://~dead host~/vypdye57f25o' rel='nofollow' target='blank'>part-2</a><a href='http://~dead host~/vypdye57f25o' rel='nofollow' target='blank'>part-2</a><a href='http://~dead host~/vypdye57f25o' rel='nofollow' target='blank'>part-2</a><a href='http://~dead host~/vypdye57f25o' rel='nofollow' target='blank'>part-2</a><a href='http://~dead host~/vypdye57f25o' rel='nofollow' target='blank'>part-2</a><a href='http://~dead host~/vypdye57f25o' rel='nofollow' target='blank'>part-2</a>
<a href='http://stackoverflow.com' rel='nofollow' target='blank'>part-2</a><a href='http://stackoverflow.com' rel='nofollow' target='blank'>part-2</a><a href='http://~dead host~/vypdye57f25o' rel='nofollow' target='blank'>part-2</a>

";

$string = preg_replace('%<a[^>]*?~dead host~.*?</a>%i', ' ', $string);

print $string;
$text="<a href='http://~dead host~/vypdye57f25o' rel='nofollow' target='blank'>part-2</a>";

 preg_match_all("/http:\/\/ ## starting from http://
 ~dead\shost~   ## along with http:// match ~dead host~
 [^\"']         ## upto singlequote or doublequote  
 +              ## one more character  
 /mx",$text,$matches);   //  m - multiple line x - include to commentary inside patterns
 print_r($matches);