我试图搜索两个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";
}
?>
答案 0 :(得分:1)
尝试使用$pattern = '/\<li id\="menuSynchronizeSwitch"\>.*\<li id\="footerPrevWeek/si';
。注意/s
,它允许点匹配换行符,我怀疑这是导致失败的原因。
答案 1 :(得分:0)
您需要使用括号
对每个模式进行分组 像这样:$ pattern =&#34; /(某种模式)/&#34 ;;
您可以通过$ matches数组
获取每个组