Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Регулярные выражения в PHP

10
22 июля 2007 года
Freeman
3.2K / / 06.03.2004
В PHP ни бум-бум, а тут столкнулся с неработоспособностью важной фичи Ваки (WackoWiki) - включения страниц.

В документации сказано следующее:
  • на включаемой странице создаются якоря конструкциями {{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>";
  };
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог