Регулярные выражения в PHP
В документации сказано следующее:
- на включаемой странице создаются якоря конструкциями {{a href="name1"}} и {{a href="name2"}}, которым обрамляется включаемый текст
- на головной странице действие включения описывается как {{include page"ВключаемаяСтраница" nomark="1" notoc="1" first_anchor="name1" last_anchor="name2"}}
На практике Вака плюёт на якоря и включает страницу полностью. В исходнике действия была такая строчка:
Код:
$strings = preg_replace("/.*\Ў\Ўa name=\"?$first_anchor\"?\Ў\Ў(.*)\Ў\Ўa name=\"?$last_anchor\"?\Ў\Ў.*$/is","\$1",$strings);
Находя неупоминание "href" странным, заменил "name" на "href":
Код:
$strings = preg_replace("/.*\Ў\Ўa href=\"?$first_anchor\"?\Ў\Ў(.*)\Ў\Ўa href=\"?$last_anchor\"?\Ў\Ў.*$/is","\$1",$strings);
Желаемого результата всё равно не получил. Сайт Ваки исчез и не знаю, можно ли достать авторов.
Код действия полностью:
Код:
$vars[0] = $this->UnwrapLink($vars[0]);
if ($_SESSION["linktracking"] && $track)
$this->TrackLinkTo($vars[0]);
if (in_array($vars[0],$this->context)) return;
if ($vars[0] == $this->tag) return;
if (! $this->HasAccess("read",$vars[0])){
if ($nowarning!=1) echo $this->GetResourceValue("NoAccessToSourcePage");
}else{
if (!$inc_page = $this->LoadPage($vars[0], $_GET["time"])){
echo "<em> ".$this->GetResourceValue("SourcePageDoesntExist")."(".$this->Link("/".$vars[0]).")</em>";
}else{
if ($inc_page["body_r"]) $strings = $inc_page["body_r"];
else $strings = $this->Format($inc_page["body"], "wacko");
$strings = preg_replace("/\Ў\Ўtoc[^\Ў]*\Ў\Ў/i","",$strings);
$strings = preg_replace("/\Ў\Ўtableofcontents[^\Ў]*\Ў\Ў/i","",$strings);
$strings = preg_replace("/\Ў\Ўp[^\Ў]*\Ў\Ў/i","",$strings);
$strings = preg_replace("/\Ў\Ўshowparagraphs[^\Ў]*\Ў\Ў/i","",$strings);
$strings = preg_replace("/\Ў\Ўredirect[^\Ў]*\Ў\Ў/i","",$strings);
$strings = preg_replace("/.*\Ў\Ўa name=\"?$first_anchor\"?\Ў\Ў(.*)\Ў\Ўa name=\"?$last_anchor\"?\Ў\Ў.*$/is","\$1",$strings);
if (($nomark!=1) && ($nomark!=2 || $this->HasAccess("write", $vars[0])))
print "<div class=\"include\">"."<div class=\"name\">".$this->Link("/".$vars[0])." :: ".
"<a href=\"".$this->Href("edit", $vars[0])."\">".$this->GetResourceValue("EditIcon")."</a></div>";
$this->context[++$this->current_context] = $vars[0];
print $this->Format($strings, "post_wacko");
$this->current_context--;
if (($nomark!=1) && ($nomark!=2 || $this->HasAccess("write", $vars[0])))
print "<div class=\"name\">".$this->Link("/".$vars[0])." :: ".
"<a href=\"".$this->Href("edit", $vars[0])."\">".$this->GetResourceValue("EditIcon")."</a></div></div>";
};
}
if ($_SESSION["linktracking"] && $track)
$this->TrackLinkTo($vars[0]);
if (in_array($vars[0],$this->context)) return;
if ($vars[0] == $this->tag) return;
if (! $this->HasAccess("read",$vars[0])){
if ($nowarning!=1) echo $this->GetResourceValue("NoAccessToSourcePage");
}else{
if (!$inc_page = $this->LoadPage($vars[0], $_GET["time"])){
echo "<em> ".$this->GetResourceValue("SourcePageDoesntExist")."(".$this->Link("/".$vars[0]).")</em>";
}else{
if ($inc_page["body_r"]) $strings = $inc_page["body_r"];
else $strings = $this->Format($inc_page["body"], "wacko");
$strings = preg_replace("/\Ў\Ўtoc[^\Ў]*\Ў\Ў/i","",$strings);
$strings = preg_replace("/\Ў\Ўtableofcontents[^\Ў]*\Ў\Ў/i","",$strings);
$strings = preg_replace("/\Ў\Ўp[^\Ў]*\Ў\Ў/i","",$strings);
$strings = preg_replace("/\Ў\Ўshowparagraphs[^\Ў]*\Ў\Ў/i","",$strings);
$strings = preg_replace("/\Ў\Ўredirect[^\Ў]*\Ў\Ў/i","",$strings);
$strings = preg_replace("/.*\Ў\Ўa name=\"?$first_anchor\"?\Ў\Ў(.*)\Ў\Ўa name=\"?$last_anchor\"?\Ў\Ў.*$/is","\$1",$strings);
if (($nomark!=1) && ($nomark!=2 || $this->HasAccess("write", $vars[0])))
print "<div class=\"include\">"."<div class=\"name\">".$this->Link("/".$vars[0])." :: ".
"<a href=\"".$this->Href("edit", $vars[0])."\">".$this->GetResourceValue("EditIcon")."</a></div>";
$this->context[++$this->current_context] = $vars[0];
print $this->Format($strings, "post_wacko");
$this->current_context--;
if (($nomark!=1) && ($nomark!=2 || $this->HasAccess("write", $vars[0])))
print "<div class=\"name\">".$this->Link("/".$vars[0])." :: ".
"<a href=\"".$this->Href("edit", $vars[0])."\">".$this->GetResourceValue("EditIcon")."</a></div></div>";
};
}