コード例 #1
0
ファイル: strcasecmp.php プロジェクト: braf/phalcana-core
/**
 * UTF8::strcasecmp
 *
 * @package    Kohana
 * @author     Kohana Team
 * @copyright  (c) 2007-2012 Kohana Team
 * @copyright  (c) 2005 Harry Fuecks
 * @license    http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt
 */
function _strcasecmp($str1, $str2)
{
    if (\Phalcana\UTF8::isAscii($str1) && \Phalcana\UTF8::isAscii($str2)) {
        return strcasecmp($str1, $str2);
    }
    $str1 = \Phalcana\UTF8::strtolower($str1);
    $str2 = \Phalcana\UTF8::strtolower($str2);
    return strcmp($str1, $str2);
}
コード例 #2
0
ファイル: stristr.php プロジェクト: braf/phalcana-core
/**
 * UTF8::stristr
 *
 * @package    Kohana
 * @author     Kohana Team
 * @copyright  (c) 2007-2012 Kohana Team
 * @copyright  (c) 2005 Harry Fuecks
 * @license    http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt
 */
function _stristr($str, $search)
{
    if (\Phalcana\UTF8::isAscii($str) && \Phalcana\UTF8::isAscii($search)) {
        return stristr($str, $search);
    }
    if ($search == '') {
        return $str;
    }
    $str_lower = \Phalcana\UTF8::strtolower($str);
    $search_lower = \Phalcana\UTF8::strtolower($search);
    preg_match('/^(.*?)' . preg_quote($search_lower, '/') . '/s', $str_lower, $matches);
    if (isset($matches[1])) {
        return substr($str, strlen($matches[1]));
    }
    return false;
}
コード例 #3
0
ファイル: Text.php プロジェクト: braf/phalcana-core
 /**
  * Convert a phrase to a URL-safe title.
  *
  *     echo URL::title('My Blog Post'); // "my-blog-post"
  *
  * @param   string  $title       Phrase to convert
  * @param   string  $separators  Word separator (any single character)
  * @param   bool    $ascii_only  Transliterate to ASCII?
  * @return  string
  */
 public static function title($title, $separator = '-', $ascii_only = false)
 {
     if ($ascii_only === true) {
         // Transliterate non-ASCII characters
         $title = UTF8::transliterate_to_ascii($title);
         // Remove all characters that are not the separator, a-z, 0-9, or whitespace
         $title = preg_replace('![^' . preg_quote($separator) . 'a-z0-9\\s]+!', '', strtolower($title));
     } else {
         // Remove all characters that are not the separator, letters, numbers, or whitespace
         $title = preg_replace('![^' . preg_quote($separator) . '\\pL\\pN\\s]+!u', '', UTF8::strtolower($title));
     }
     // Replace all separator characters and whitespace by a single separator
     $title = preg_replace('![' . preg_quote($separator) . '\\s]+!u', $separator, $title);
     // Trim separators from the beginning and end
     return trim($title, $separator);
 }
コード例 #4
0
ファイル: strIreplace.php プロジェクト: braf/phalcana-core
/**
 * UTF8::strIreplace
 *
 * @package    Kohana
 * @author     Kohana Team
 * @copyright  (c) 2007-2012 Kohana Team
 * @copyright  (c) 2005 Harry Fuecks
 * @license    http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt
 */
function _strIreplace($search, $replace, $str, &$count = null)
{
    if (\Phalcana\UTF8::isAscii($search) && \Phalcana\UTF8::isAscii($replace) && \Phalcana\UTF8::isAscii($str)) {
        return str_ireplace($search, $replace, $str, $count);
    }
    if (is_array($str)) {
        foreach ($str as $key => $val) {
            $str[$key] = \Phalcana\UTF8::strIreplace($search, $replace, $val, $count);
        }
        return $str;
    }
    if (is_array($search)) {
        $keys = array_keys($search);
        foreach ($keys as $k) {
            if (is_array($replace)) {
                if (array_key_exists($k, $replace)) {
                    $str = \Phalcana\UTF8::strIreplace($search[$k], $replace[$k], $str, $count);
                } else {
                    $str = \Phalcana\UTF8::strIreplace($search[$k], '', $str, $count);
                }
            } else {
                $str = \Phalcana\UTF8::strIreplace($search[$k], $replace, $str, $count);
            }
        }
        return $str;
    }
    $search = \Phalcana\UTF8::strtolower($search);
    $str_lower = \Phalcana\UTF8::strtolower($str);
    $total_matched_strlen = 0;
    $i = 0;
    while (preg_match('/(.*?)' . preg_quote($search, '/') . '/s', $str_lower, $matches)) {
        $matched_strlen = strlen($matches[0]);
        $str_lower = substr($str_lower, $matched_strlen);
        $offset = $total_matched_strlen + strlen($matches[1]) + $i * (strlen($replace) - 1);
        $str = substr_replace($str, $replace, $offset, strlen($search));
        $total_matched_strlen += $matched_strlen;
        $i++;
    }
    $count += $i;
    return $str;
}
コード例 #5
0
ファイル: UTF8Test.php プロジェクト: braf/phalcana-core
 /**
  * Tests UTF8::strtolower
  *
  * @test
  * @dataProvider provider_strtolower
  */
 public function test_strtolower($input, $expected)
 {
     $this->assertSame($expected, UTF8::strtolower($input));
 }