コード例 #1
0
ファイル: Post.php プロジェクト: raphaeljorge/tor
 /**
  * Parse le content et retourne du HTML valide
  *
  */
 public function getContentHtml()
 {
     $code = new Decoda\Decoda($this->content);
     $code->defaults();
     $code->setXhtml(false);
     $code->setStrict(false);
     $code->setLineBreaks(true);
     return $code->parse();
 }
コード例 #2
0
ファイル: ForumController.php プロジェクト: raphaeljorge/tor
 /**
  * Affiche le contenue 
  *
  * @access public
  * @return HTML
  */
 public function getPreview()
 {
     $code = new Decoda\Decoda(Input::get('content'));
     $code->defaults();
     $code->setXhtml(false);
     $code->setStrict(false);
     $code->setLineBreaks(true);
     return $code->parse();
 }
コード例 #3
0
ファイル: features.php プロジェクト: owency/Owency
$string = '{b}Bold{/b}
{i}Italics{/i}
{u}Underline{/u}
{s}Strike through{/s}
{b}{i}{u}Bold, italics, underline{/u}{/i}{/b}';
$code = new \Decoda\Decoda($string);
$code->addFilter(new \Decoda\Filter\DefaultFilter())->setBrackets('{', '}');
echo $code->parse();
?>

<h2>Shorthand emails and URLs</h2>

<?php 
$string = '[email]email@domain.com[/email]
[url]http://domain.com/[/url]';
$code = new \Decoda\Decoda($string);
$code->addFilter(new \Decoda\Filter\EmailFilter())->addFilter(new \Decoda\Filter\UrlFilter())->setShorthand();
echo $code->parse();
?>

<h2>XHTML markup</h2>

<?php 
$string = '[b]Bold[/b]
[i]Italics[/i]
[u]Underline[/u]
[s]Strike through[/s]
[b][i][u]Bold, italics, underline[/u][/i][/b]';
$code = new \Decoda\Decoda($string);
$code->addFilter(new \Decoda\Filter\DefaultFilter())->setXhtml();
echo $code->parse();
コード例 #4
0
ファイル: code.php プロジェクト: owency/Owency
<?php

$code = new \Decoda\Decoda();
$code->addFilter(new \Decoda\Filter\CodeFilter());
$code->addHook(new \Decoda\Hook\EmoticonHook());
$code->addHook(new \Decoda\Hook\CensorHook());
?>

<h2>Code</h2>

<?php 
$string = "[code]// Constants\ndefine('DECODA', __DIR__ . '/');\n\n// Includes\nspl_autoload_register();\nset_include_path(implode(PATH_SEPARATOR, array(\n    get_include_path(),\n    DECODA\n)));[/code]";
$code->reset($string);
echo $code->parse();
?>

<h2>Code <span>with filters and hooks</span></h2>

<?php 
$string = "[code]email@domain.com\n\n:] :) :D :/ >[ :p :o >_>\n\n:happy: :aw: :cool: :kiss: :meh: :mmf: :heart:\n\nfuuCCkk shhiiiitt bITCH assHOLE peeniiss douchhe\n\nfucker shiting bitched[/code]";
$code->reset($string);
echo $code->parse();
?>

<h2>Code <span>with language attribute</span></h2>

<?php 
$string = '[code="php"]<?php
abstract class HookAbstract implements Hook {

    /**
コード例 #5
0
ファイル: clickable.php プロジェクト: owency/Owency
<h2>Clickable</h2>

<?php 
$string = 'Valid:
email@domain.com
http://domain.com

Invalid:
email@domain
www.domain.com';
$code = new \Decoda\Decoda($string);
$code->addFilter(new \Decoda\Filter\EmailFilter());
$code->addFilter(new \Decoda\Filter\UrlFilter());
$code->addHook(new \Decoda\Hook\ClickableHook());
echo $code->parse();
コード例 #6
0
ファイル: text.php プロジェクト: owency/Owency
<?php

$code = new \Decoda\Decoda();
$code->addFilter(new \Decoda\Filter\TextFilter());
?>

<h2>Font Family</h2>

<?php 
$string = '[font="Arial"]Lorem ipsum dolor sit amet, consectetur adipiscing elit.[/font]
[font="Verdana"]Volutpat tellus vulputate dui venenatis quis euismod turpis pellentesque.[/font]
[font="Tahoma"]Suspendisse sit amet ipsum eu odio sagittis ultrices at non sapien.[/font]
[font="Monospace, \'Lucida Sans\'"]Quisque viverra feugiat purus, in luctus faucibus felis eget viverra.[/font]
[font="Times"]Suspendisse sit amet ipsum eu odio sagittis ultrices at non sapien.[/font]';
$code->reset($string);
echo $code->parse();
?>

<h2>Size <span>(10-29)</span></h2>

<?php 
$string = '[size="5"]Lorem ipsum dolor sit amet, consectetur adipiscing elit.[/size]
[size="10"]Volutpat tellus vulputate dui venenatis quis euismod turpis pellentesque.[/size]
[size="19"]Suspendisse sit amet ipsum eu odio sagittis ultrices at non sapien.[/size]
[size="27"]Quisque viverra feugiat purus, in luctus faucibus felis eget viverra.[/size]
[size="32"]Suspendisse sit amet ipsum eu odio sagittis ultrices at non sapien.[/size]';
$code->reset($string);
echo $code->parse();
?>

<h2>Color</h2>
コード例 #7
0
ファイル: nesting.php プロジェクト: owency/Owency
?>

<h2>Incorrectly nested</h2>

<?php 
$string = '[b]Bold[/b]
[b][i]Bold, italics[/i][/b]
[i][u]Bold, italics, underline (wrong)[/b][/i][/u]';
$code = new \Decoda\Decoda($string);
$code->addFilter(new \Decoda\Filter\DefaultFilter());
echo $code->parse();
?>

<h2>Incorrectly nested hierarchy</h2>

<?php 
$string = '[li]List item outside of a list or olist.[/li]

[list]
[b]Bold tag as the first descendant of list.[/b]
[li]Lorem ipsum dolor sit amet, consectetuer adipiscing elit.[/li]
[li]Aliquam laoreet pulvinar sem. Aenean at odio.[/li]
[li]Vestibulum ante [b]ipsum primis in faucibus orci luctus[/b] et ultrices posuere cubilia Curae; Donec elit.[/li]
[li]Fusce eget enim. Nullam tellus felis, sodales nec, sodales ac, commodo eu, ante.[/li]
[li]Curabitur tincidunt, lacus eget iaculis tincidunt.[/li]
[li]Curabitur sed [i]tellus[/i]. Donec id dolor.[/li]
[/list]';
$code = new \Decoda\Decoda($string);
$code->addFilter(new \Decoda\Filter\DefaultFilter());
$code->addFilter(new \Decoda\Filter\ListFilter());
echo $code->parse();
コード例 #8
0
ファイル: default.php プロジェクト: owency/Owency
<?php

$code = new \Decoda\Decoda();
$code->addFilter(new \Decoda\Filter\DefaultFilter());
?>

<h2>Bold, italics, underline, strike-through</h2>

<?php 
$string = '[b]Bold[/b]
[i]Italics[/i]
[u]Underline[/u]
[s]Strike through[/s]
[b][i][u]Bold, italics, underline[/u][/i][/b]';
$code->reset($string);
echo $code->parse();
?>

<h2>Super-script and sub-script</h2>

<?php 
$string = 'Super[sup]script[/sup]
Sub[sub]script[/sub]
[sup]Super[/sup]-[sub]sub[/sub]-script';
$code->reset($string);
echo $code->parse();
?>

<h2>Bold, italics <span>(XHTML)</span></h2>

<?php 
コード例 #9
0
ファイル: helper.php プロジェクト: NicholasJohn16/forums
 public function bbcode($text)
 {
     $decoda = new Decoda\Decoda($text);
     $decoda->defaults();
     $decoda->setStrict(false);
     // $decoda->removeFilter('Video');
     $decoda->removeHook('Censor');
     //$decoda->removeFilter('Url');
     $html = $decoda->parse();
     // $errors = $decoda->getErrors();
     // foreach($errors as $error) {
     //     $string = "";
     //     foreach($error as $key => $value) {
     //         $string = $key . ":" . $value . ", ";
     //     }
     //     error_log($string);
     // }
     // print_r($errors);
     $nesting = array();
     $closing = array();
     $scope = array();
     $errors = array();
     foreach ($decoda->getErrors() as $error) {
         switch ($error['type']) {
             case Decoda\Decoda::ERROR_NESTING:
                 $nesting[] = $error['tag'];
                 break;
             case Decoda\Decoda::ERROR_CLOSING:
                 $closing[] = $error['tag'];
                 break;
             case Decoda\Decoda::ERROR_SCOPE:
                 $scope[] = $error['child'] . ' in ' . $error['parent'];
                 break;
         }
     }
     if (!empty($nesting)) {
         $errors[] = sprintf('The following tags have been nested in the wrong order: %s', implode(', ', $nesting));
     }
     if (!empty($closing)) {
         $errors[] = sprintf('The following tags have no closing tag: %s', implode(', ', $closing));
     }
     if (!empty($scope)) {
         $errors[] = sprintf('The following tags can not be placed within a specific tag: %s', implode(', ', $scope));
     }
     foreach ($errors as $error) {
         $string = '<div class="alert alert-error">';
         $string .= $error;
         $string .= '</div>';
         echo $string;
     }
     return $html;
     // return $decoda->parse();
     // return $text;
 }
コード例 #10
0
ファイル: engine.php プロジェクト: owency/Owency
        foreach ($tag['attributes'] as $key => $value) {
            if (isset($setup['map'][$key])) {
                $key = $setup['map'][$key];
            }
            $vars[$key] = $value;
        }
        extract($vars, EXTR_SKIP);
        ob_start();
        include $path;
        return ob_get_clean();
    }
}
// Lets change the template path and the file extension.
$engine = new TestEngine();
$engine->addPath(__DIR__ . '/templates/');
$code = new \Decoda\Decoda();
$code->addFilter(new \Decoda\Filter\QuoteFilter());
$code->setEngine($engine);
?>

<h2>Test Rendering</h2>

<p>Uses a different template engine, with a separate templates folder and a different file extension.</p>

<br>

<?php 
$string = '[quote]Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque non sapien a eros tincidunt accumsan. Ut nisl dui, dignissim at posuere quis, facilisis eget lectus. Morbi vitae massa eu metus pharetra rhoncus. Suspendisse potenti. Phasellus laoreet dapibus dapibus. Duis faucibus lacinia diam, nec pharetra est pharetra vitae. Etiam sodales, nulla et ullamcorper mattis, augue nunc sollicitudin risus, nec imperdiet est leo vitae est. Integer ultricies, metus at scelerisque interdum, sapien lorem mollis orci, vel mattis felis augue vitae nunc. Fusce eget sem sed orci interdum commodo sit amet et metus. In ultricies feugiat eleifend. Aliquam erat volutpat.
    [quote="Miles"]Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque non sapien a eros tincidunt accumsan. Ut nisl dui, dignissim at posuere quis, facilisis eget lectus. Morbi vitae massa eu metus pharetra rhoncus. Suspendisse potenti. Phasellus laoreet dapibus dapibus. Duis faucibus lacinia diam, nec pharetra est pharetra vitae. Etiam sodales, nulla et ullamcorper mattis, augue nunc sollicitudin risus, nec imperdiet est leo vitae est. Integer ultricies, metus at scelerisque interdum, sapien lorem mollis orci, vel mattis felis augue vitae nunc. Fusce eget sem sed orci interdum commodo sit amet et metus. In ultricies feugiat eleifend. Aliquam erat volutpat.[/quote]
    [quote date="1313728971"]Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque non sapien a eros tincidunt accumsan. Ut nisl dui, dignissim at posuere quis, facilisis eget lectus. Morbi vitae massa eu metus pharetra rhoncus. Suspendisse potenti. Phasellus laoreet dapibus dapibus. Duis faucibus lacinia diam, nec pharetra est pharetra vitae. Etiam sodales, nulla et ullamcorper mattis, augue nunc sollicitudin risus, nec imperdiet est leo vitae est. Integer ultricies, metus at scelerisque interdum, sapien lorem mollis orci, vel mattis felis augue vitae nunc. Fusce eget sem sed orci interdum commodo sit amet et metus. In ultricies feugiat eleifend. Aliquam erat volutpat.
        [quote="Miles" date="2011-02-26 06:42:33"]Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque non sapien a eros tincidunt accumsan. Ut nisl dui, dignissim at posuere quis, facilisis eget lectus. Morbi vitae massa eu metus pharetra rhoncus. Suspendisse potenti. Phasellus laoreet dapibus dapibus. Duis faucibus lacinia diam, nec pharetra est pharetra vitae. Etiam sodales, nulla et ullamcorper mattis, augue nunc sollicitudin risus, nec imperdiet est leo vitae est. Integer ultricies, metus at scelerisque interdum, sapien lorem mollis orci, vel mattis felis augue vitae nunc. Fusce eget sem sed orci interdum commodo sit amet et metus. In ultricies feugiat eleifend. Aliquam erat volutpat.
コード例 #11
0
ファイル: ForumController.php プロジェクト: raphaeljorge/tor
 /**
  * Edit le post de l'utilisateur
  *
  * @param $slug Slug du topic
  * @param $id Id du topic
  * @param $postId Id du post
  */
 public function postEdit($slug, $id, $postId)
 {
     $user = Auth::user();
     $topic = Topic::find($id);
     $forum = $topic->forum;
     $category = $forum->getCategory();
     $post = Post::find($postId);
     $parsedContent = null;
     if ($user->group->is_modo == false) {
         if ($post->user_id != $user->id) {
             return Redirect::route('forum_topic', ['slug' => $topic->slug, 'id' => $topic->id])->with('message', 'You can\'t edit this post');
         }
     }
     // Prévisualisation du post
     if (Request::getMethod() == 'POST' && Input::get('preview') == true) {
         $post->content = Input::get('content');
         $code = new Decoda\Decoda($post->content);
         $code->defaults();
         $parsedContent = $code->parse();
     }
     if (Request::isMethod('post') && Input::get('post') == true) {
         $post->content = Input::get('content');
         $post->save();
         return Redirect::route('forum_topic', ['slug' => $topic->slug, 'id' => $topic->id]);
     }
     return View::make('forum.post_edit', ['user' => $user, 'topic' => $topic, 'forum' => $forum, 'post' => $post, 'category' => $category, 'parsedContent' => $parsedContent]);
 }
コード例 #12
0
 /**
  * @static
  * @param string $text
  * @param bool $allow_html
  * @return string
  */
 static function bbcode2html($text, $allow_html = false)
 {
     $debug = false;
     /*
     $text = preg_replace_callback("/(\[quote[^\]]*\])(.*)(\[\/o?quote\])/siuU", function ($matches) {
     	$first_open  = mb_stripos($matches[2], "[LIST");
     	$first_close = mb_stripos($matches[2], "[/LIST]");
     
     	if ($first_close !== false && ($first_open === false || $first_close < $first_open)) $matches[2] = trim(mb_substr($matches[2], 0, $first_close) . "\n" . mb_substr($matches[2], $first_close + 7));
     	return $matches[1] . $matches[2] . $matches[3];
     }, $text);
     */
     if ($debug) {
         //require_once("/var/www/antragsgruen-v2/vendor/mjohnson/decoda/examples/list.php");
         echo "<br>IN========<br>";
         echo CHtml::encode($text);
     }
     $text = preg_replace_callback("/(\\[quote[^\\]]*\\])(.*)(\\[\\/o?quote\\])/siuU", function ($matches) {
         if (mb_stripos($matches[2], "[li]") === false && mb_stripos($matches[2], "[*]") === false) {
             return $matches[1] . $matches[2] . $matches[3];
         }
         if (mb_stripos($matches[2], "[list]") === false) {
             return "[list]\n[*]" . $matches[2] . "\n[/list]";
         } else {
             return $matches[2];
         }
     }, $text);
     $text = preg_replace_callback("/(\\[o?list[^\\]]*\\])(.*)(\\[\\/o?list\\])/siuU", function ($matches) use($debug) {
         $parts = explode("[*]", trim($matches[2]));
         $str = $matches[1];
         foreach ($parts as $part) {
             if ($part != "") {
                 $str .= "[LI]" . trim($part) . "[/LI]";
             }
         }
         $str .= $matches[3];
         return $str;
     }, $text);
     $text = preg_replace_callback("/(?<pre>\\[url=)(?<url>[^\"\\]]+)(?<post>\\])/siu", function ($matches) {
         return $matches["pre"] . "\"" . $matches["url"] . "\"" . $matches["post"];
     }, $text);
     $code = new \Decoda\Decoda();
     $code->setEscaping(!$allow_html);
     $code->addFilter(new AntraegeBBCodeFilter());
     $code->addFilter(new \Decoda\Filter\UrlFilter());
     if ($debug) {
         //require_once("/var/www/antragsgruen-v2/vendor/mjohnson/decoda/examples/list.php");
         echo "<br>IN========<br>";
         echo CHtml::encode($text);
     }
     $code->reset($text);
     $text = $code->parse();
     if ($debug) {
         echo "<br>OUT========<br>";
         echo CHtml::encode($text);
     }
     $text = str_replace("<br>\n", "<br>", $text);
     $text = str_replace("\n", "<br>", $text);
     $text = preg_replace("/<br *\\/>/siu", "<br>", $text);
     $text = preg_replace("/<ul>[<br>\\n]*<li>/siu", "<ul>\n<li>", $text);
     $text = preg_replace("/<\\/li>[<br>\\n]*<li>/siu", "</li>\n<li>", $text);
     $text = preg_replace("/<\\/li>[<br>\\n]*<\\/ul>/siu", "</li>\n</ul>", $text);
     return $text;
 }
コード例 #13
0
ファイル: index.php プロジェクト: owency/Owency
        .decoda-quote-head { font-weight: bold; margin-bottom: 5px; }
        .decoda-quote-date { float: right; }
        .decoda-code { background: lightgray; padding: 10px; border-radius: 3px; }
        .decoda-alert { background: lightpink; padding: 10px; border-radius: 3px; }
        .decoda-note { background: powderblue; padding: 10px; border-radius: 3px; }
        .decoda-spoiler-content { background: palegreen; margin-top: 5px; padding: 10px; border-radius: 3px; }
        .decoda-spoiler-content .decoda-spoiler { margin-top: 10px; }
        .decoda-spoiler-content .decoda-spoiler-content { background: oldlace; }
    </style>
</head>
<body>
    <h1>Decoda</h1>

    <?php 
// Copyright
$code = new \Decoda\Decoda('Copyright 2009-' . date('Y') . ' [sup]&copy;[/sup] Miles Johnson - [url]http://milesj.me[/url]');
$code->defaults();
echo $code->parse();
?>

    <dl>
        <dt>About</dt>
        <dd><?php 
buildMenu($about, $view);
?>
</dd>

        <dt>Filters</dt>
        <dd><?php 
buildMenu($filters, $view);
?>
コード例 #14
0
ファイル: security.php プロジェクト: owency/Owency
<?php

$code = new \Decoda\Decoda();
$code->defaults();
?>

<h2>XSS Protection</h2>

<p>Any form of XSS injection will be escaped or removed from the final output; this includes any attribute beginning with javascript:.</p><br>

<?php 
$string = '<script>alert("I can use XSS");</script>
[b]<script>alert(document.cookie);</script>[/b]
[div class="javascript:alert(document);"]Attribute XSS prevention[/div]
[video="youtube" size="small"]"onload="alert(\'XSS\');" id="[/video]';
$code->reset($string);
echo $code->parse();
?>

<h2>XSS Protection <span>within an image</span></h2>

<p>If an [img] tag attempts to generate an XSS attack by placing multiple HTTP calls in one tag, the tag will not be rendered.
    For example, the following URL will fail: [img]http://example.com/delete-account?image=http://example.com/image.jpg[/img]</p><br>

<?php 
$string = '[img]http://localhost/doSomething.php?image=http://www.google.com/intl/en_ALL/images/srpr/logo1w.png[/img]';
$code->reset($string);
echo $code->parse();
コード例 #15
0
ファイル: DecodaHelper.php プロジェクト: johnulist/utility
 /**
  * Instantiate the class and apply settings.
  *
  * @param View $view
  * @param array $settings
  */
 public function __construct(View $view, $settings = array())
 {
     parent::__construct($view, $settings);
     $settings = $settings + Configure::read('Decoda.config');
     $locale = Configure::read('Config.language') ?: $settings['locale'];
     $localeMap = Configure::read('Decoda.locales');
     unset($settings['locale']);
     $decoda = new \Decoda\Decoda('', $settings);
     $decoda->whitelist($settings['whitelist'])->blacklist($settings['blacklist']);
     if ($paths = $settings['paths']) {
         foreach ((array) $paths as $path) {
             $decoda->addPath($path);
         }
     }
     if ($messages = $settings['messages']) {
         $decoda->addMessages(new \Decoda\Loader\DataLoader($messages));
     }
     // Set locale
     if (isset($localeMap[$locale])) {
         $decoda->setLocale($localeMap[$locale]);
     } else {
         if (in_array($locale, $localeMap)) {
             $decoda->setLocale($locale);
         }
     }
     // Apply hooks and filters
     if (empty($settings['filters']) && empty($settings['hooks'])) {
         $decoda->defaults();
     } else {
         if ($filters = $settings['filters']) {
             foreach ((array) $filters as $filter) {
                 $filter = sprintf('\\Decoda\\Filter\\%sFilter', $filter);
                 $decoda->addFilter(new $filter());
             }
         }
         if ($hooks = $settings['hooks']) {
             foreach ((array) $hooks as $hook) {
                 $hook = sprintf('\\Decoda\\Hook\\%sHook', $hook);
                 $decoda->addHook(new $hook());
             }
         }
     }
     // Custom config
     $decoda->addHook(new \Decoda\Hook\EmoticonHook(array('path' => '/utility/img/emoticon/')));
     $decoda->setEngine(new CakeEngine($settings['helpers']));
     $this->_decoda = $decoda;
 }
コード例 #16
0
ファイル: Torrent.php プロジェクト: raphaeljorge/tor
 /**
  * Formate la sortie de la description
  *
  */
 public function getDescriptionHtml()
 {
     $code = new Decoda\Decoda($this->description);
     $code->defaults();
     return $code->parse();
 }
コード例 #17
0
ファイル: emoticon.php プロジェクト: owency/Owency
<h2>Emoticons</h2>

<?php 
$string = 'Decoda also comes with an emoticon system. It will convert any kind of smiley from emoticons.json into a small image.
The system will not parse smilies within strings (like URLs) that resemble smilies. Here are a couple:

:] :) :D :/ >[ :p :o >_>

It also supports the word syntax:

:happy: :aw: :cool: :kiss: :meh: :mmf: :heart:';
$code = new \Decoda\Decoda($string);
$code->addFilter(new \Decoda\Filter\ImageFilter());
$code->addHook(new \Decoda\Hook\EmoticonHook(array('path' => '../emoticons/')));
echo $code->parse();
コード例 #18
0
ファイル: bbcode.php プロジェクト: NicholasJohn16/forums
 public function filter($text)
 {
     $config = array('escapeHtml' => false);
     $decoda = new Decoda\Decoda($text, $config);
     $decoda->setStrict(false);
     // $decoda->defaults();
     $decoda->addFilter(new \Decoda\Filter\DefaultFilter());
     $decoda->addFilter(new \Decoda\Filter\EmailFilter());
     $decoda->addFilter(new \Decoda\Filter\ImageFilter());
     $decoda->addFilter(new \Decoda\Filter\UrlFilter());
     $decoda->addFilter(new \Decoda\Filter\TextFilter());
     $decoda->addFilter(new \Decoda\Filter\VideoFilter());
     $decoda->addFilter(new \Decoda\Filter\CodeFilter());
     $decoda->addFilter(new \Decoda\Filter\QuoteFilter());
     $decoda->addFilter(new \Decoda\Filter\ListFilter());
     $decoda->addFilter(new \Decoda\Filter\TableFilter());
     $decoda->addFilter(new ComForumsBlock());
     $decoda->addHook(new \Decoda\Hook\ClickableHook());
     $parsed = $decoda->parse();
     $html = str_replace('<br />', '', $parsed);
     $nesting = array();
     $closing = array();
     $scope = array();
     $errors = array();
     foreach ($decoda->getErrors() as $error) {
         switch ($error['type']) {
             case Decoda\Decoda::ERROR_NESTING:
                 $nesting[] = $error['tag'];
                 break;
             case Decoda\Decoda::ERROR_CLOSING:
                 $closing[] = $error['tag'];
                 break;
             case Decoda\Decoda::ERROR_SCOPE:
                 $scope[] = $error['child'] . ' in ' . $error['parent'];
                 break;
         }
     }
     if (!empty($nesting)) {
         $errors[] = sprintf('The following tags have been nested in the wrong order: %s', implode(', ', $nesting));
     }
     if (!empty($closing)) {
         $errors[] = sprintf('The following tags have no closing tag: %s', implode(', ', $closing));
     }
     if (!empty($scope)) {
         $errors[] = sprintf('The following tags can not be placed within a specific tag: %s', implode(', ', $scope));
     }
     foreach ($errors as $error) {
         $string = '<div class="alert alert-error">';
         $string .= $error;
         $string .= '</div>';
         echo $string;
     }
     return $html;
 }
コード例 #19
0
ファイル: url.php プロジェクト: owency/Owency
<?php

$code = new \Decoda\Decoda();
$code->addFilter(new \Decoda\Filter\UrlFilter());
$code->addHook(new \Decoda\Hook\ClickableHook());
?>

<h2>URL</h2>

<?php 
$string = 'Valid websites:
[url]http://domain.com[/url]
[url]https://securesite.com[/url]
[url]ftp://ftpsite.com[/url]
[url]irc://ircsite.com[/url]
[url]telnet://telnetsite.com[/url]
[url="http://domain.com"]Linked URL[/url]

Valid websites (auto-linked with hook):
http://domain.com
http://sub.domain.com/?with=param
http://user:pass@domain.com:80/?with=param

Invalid websites:
[url]domain.com[/url]
[url]www.domain.com[/url]
[url]wtf://unsupportedprotocol.com/[/url]';
$code->reset($string);
echo $code->parse();
?>
コード例 #20
0
ファイル: censor.php プロジェクト: owency/Owency
<h2>Censoring</h2>

<?php 
$string = 's**t f**k bitch

Decoda uses a pretty awesome censoring system. It censors any word in the censored.txt blacklist file.
It tries its best not to censor words within other words, but it can happen. Here are a few examples:

f**k shit bitch asshole penis douche

And here are the same words, but with different lengths for each letter, and in different cases.

fuuCCkk shhiiiitt! bITCH assHOLE peeniiss douchhe

It will also magically censor words that end with: ing, ed, er

f****r shiting bitched?

Lets try not to censor words that are already part of other words.

analyst cockle nigeria grape

Hope it works out, I tried to make it as smart as possible.

f**k. c**t';
$code = new \Decoda\Decoda($string);
$code->addHook(new \Decoda\Hook\CensorHook());
echo $code->parse();