转换此代码以接受Unicode文本

时间:2014-05-26 16:39:50

标签: php regex unicode

我有一个用PHP编写的脚本,但是有一个问题

此代码不接受Unicode文本。当我将Unicode文本传递给此代码时,它会返回一些无效字符。

public static function compile(&$subject, $replace, $with) {
        $placeholders = array_combine($replace, $with);

        $condition  = '{[a-z0-9\_\- ]+:[a-z_]+}';
        $inner      = '((?:(?!{/?if).)*)';
        $pattern    = '#{if ('.$condition.')}'.$inner.'{/if}#is';

        while (preg_match($pattern, $subject, $match)) {
            $placeholder = $match[1];
            $content     = $match[2];

            // if empty value remove whole line
            // else show line but remove pseudo-code
            $subject = preg_replace($pattern,
                                    empty($placeholders[$placeholder]) ? '' : addcslashes($content, '$'),
                                    $subject,
                                    1);
        }
    }

请帮帮我。

1 个答案:

答案 0 :(得分:0)

AFAIK,对于unicode,您需要使用多字节字符串方法:

http://php.net/manual/en/ref.mbstring.php