Php url中特定模式的预匹配?
我想在PHP中使用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="&
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);