Ejemplo n.º 1
0
 * @license   New BSD License
 * @link      http://search.cpan.org/~kazuho/String-Filter-0.01/
 */
require_once 'lime.php';
require_once dirname(__DIR__) . '/src/String/Filter.php';
$t = new lime_test(null, new lime_output_color());
$list = array('rules' => array('http://[A-Za-z0-9_\\-\\~\\.\\%\\?\\#\\@/]+' => function ($url) {
    $url = htmlspecialchars($url, ENT_QUOTES, 'UTF-8');
    $ret = "<a href=\"{$url}\">{$url}</a>";
    return $ret;
}, '(?:^|\\s)\\@[A-Za-z0-9_]+' => function ($value) {
    if (preg_match('/^(.*?\\@)(.*)$/', $value, $_)) {
        $prefix = $_[1];
        $user = $_[2];
        $ret = sprintf('%s<a href="http://twitter.com/%s">%s</a>', $prefix, htmlspecialchars($user, ENT_QUOTES, 'UTF-8'), $user);
        return $ret;
    }
}, '(?:^|\\s)#[A-Za-z0-9_]+' => function ($value) {
    if (preg_match('/^(.?)(#.*)$/', $value, $_)) {
        $prefix = $_[1];
        $hashtag = $_[2];
        $ret = sprintf('%s<a href="http://twitter.com/search?q=%s"><b>%s</b></a>', $prefix, htmlspecialchars(urlencode($hashtag), ENT_QUOTES, 'UTF-8'), $hashtag);
        return $ret;
    }
}), 'defaultRule' => function ($text) {
    return htmlspecialchars($text, ENT_QUOTES, 'UTF-8');
});
$sf = new \String\Filter($list);
$t->ok($sf->filter('@kazuho @kazuho foo@bar http://hello.com/ yesyes <b> #hash') === '@<a href="http://twitter.com/kazuho">kazuho</a> @<a href="http://twitter.com/kazuho">kazuho</a> foo@bar <a href="http://hello.com/">http://hello.com/</a> yesyes &lt;b&gt; <a href="http://twitter.com/search?q=%23hash"><b>#hash</b></a>', '');
$t->ok($sf->filter('テスト @kazuho @kazuho foo@bar http://hello.com/ yesyes <b> #hash') === 'テスト @<a href="http://twitter.com/kazuho">kazuho</a> @<a href="http://twitter.com/kazuho">kazuho</a> foo@bar <a href="http://hello.com/">http://hello.com/</a> yesyes &lt;b&gt; <a href="http://twitter.com/search?q=%23hash"><b>#hash</b></a>', '');
$t->ok($sf->filter('テスト@foo @kazuho @kazuho foo@bar http://hello.com/ yesyes <b> #hash') === 'テスト@foo @<a href="http://twitter.com/kazuho">kazuho</a> @<a href="http://twitter.com/kazuho">kazuho</a> foo@bar <a href="http://hello.com/">http://hello.com/</a> yesyes &lt;b&gt; <a href="http://twitter.com/search?q=%23hash"><b>#hash</b></a>', '');
Ejemplo n.º 2
0
}, '(?:^|\\s)#[A-Za-z0-9_]+' => function ($value) {
    if (preg_match('/^(.?)(#.*)$/', $value, $_)) {
        $prefix = $_[1];
        $hashtag = $_[2];
        $ret = sprintf('%s<a href="http://twitter.com/search?q=%s"><b>%s</b></a>', $prefix, htmlspecialchars(urlencode($hashtag), ENT_QUOTES, 'UTF-8'), $hashtag);
        return $ret;
    }
}), 'defaultRule' => function ($text) {
    return htmlspecialchars($text, ENT_QUOTES, 'UTF-8');
});
$sf = new \String\Filter($list);
echo $sf->filter('@kazuho @kazuho foo@bar http://hello.com/ yesyes <b> #hash') . PHP_EOL;
//// @<a href="http://twitter.com/kazuho">kazuho</a> @<a href="http://twitter.com/kazuho">kazuho</a> foo@bar <a href="http://hello.com/">http://hello.com/</a> yesyes &lt;b&gt; <a href="http://twitter.com/search?q=%23hash"><b>#hash</b></a>'
// You can also write addRule()
$sf = new \String\Filter(array('defaultRule' => function ($text) {
    return htmlspecialchars($text, ENT_QUOTES, 'UTF-8');
}));
$sf->addRule(array('http://[A-Za-z0-9_\\-\\~\\.\\%\\?\\#\\@/]+' => function ($url) {
    $url = htmlspecialchars($url, ENT_QUOTES, 'UTF-8');
    return sprintf('<a href="%s">%s</a>', $url, $url);
}));
$sf->addRule(array('(?:^|\\s)\\@[A-Za-z0-9_]+' => function ($value) {
    if (preg_match('/^(.*?\\@)(.*)$/', $value, $_)) {
        $prefix = $_[1];
        $user = $_[2];
        $ret = sprintf('%s<a href="http://twitter.com/%s">%s</a>', $prefix, htmlspecialchars($user, ENT_QUOTES, 'UTF-8'), $user);
        return $ret;
    }
}));
$sf->addRule(array('(?:^|\\s)#[A-Za-z0-9_]+' => function ($value) {
    if (preg_match('/^(.?)(#.*)$/', $value, $_)) {