1

我试图搜索两个 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";
}
?>
4

2 回答 2

1

尝试使用$pattern = '/\<li id\="menuSynchronizeSwitch"\>.*\<li id\="footerPrevWeek/si';. 注意/s,它允许点匹配换行符,我怀疑这是导致失败的原因。

于 2012-10-10T06:48:35.013 回答
0

您需要用括号对每个模式进行分组

像这样:

$pattern = "/(一些模式)/";

您可以通过 $matches 数组获取每个组

于 2012-10-10T06:46:31.263 回答