[英]How do I select content between two patterns with preg_match_all on php?
我正在尝试搜索两个HTML标记,并同时获取它们之间的所有内容。 当我分别尝试每个标签时,会发现它们很好,因此我知道它们拼写正确并且存在。 我认为模式存在问题,有人可以帮助我吗。 我在网上研究的所有内容似乎无所适从。 因此,如果您能解释一下您的模式如何工作,那就太好了!
请参阅下面的代码,如果您有任何疑问,请随时提问。
谢谢你的时间:)
<?php
$date= date(Y)."/".date(n)."/".date(j);
$address= "http:www.example.com/".$date;
$text_page = file_get_contents("$address");
$searchfor1 = '<li id="menuSynchronizeSwitch">';
$searchfor2 = '<li id="footerPrevWeek';
header('Content-Type: text/plain');
$pattern1 = preg_quote($searchfor1, '/');
$pattern2 = preg_quote($searchfor2, '/');
$pattern = "/^.*$pattern1.*\r*$pattern2.*\$/m";
if(preg_match_all($pattern, $text_page, $matches)){
echo "Found matches:\n";
echo implode("\n", $matches[0]);
}
else{
echo "No matches found";
}
?>
尝试使用$pattern = '/\\<li id\\="menuSynchronizeSwitch"\\>.*\\<li id\\="footerPrevWeek/si';
请注意/s
,它允许点匹配换行符,我怀疑是是什么导致此操作失败。
您需要使用括号将每个模式分组
像这样:
$ pattern =“ /(某些模式)/”;
您可以通过$ matches数组获取每个组
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.