PHP Tinymce 土耳其语字符问题

问题描述 投票:0回答:4

我正在使用tinymce编辑器。它工作正常,但当我使用 slug 时,它无法正常工作 例如;当我写“Türkçe Ürün”时,我看到这样的结果“t,uuml,rk,ccedil,e,uuml,r,uuml,n”。

        // Slugify a string
    function slugify($text)
    {

        $text = str_replace('ü','u',$text);
        $text = str_replace('Ü','U',$text);
        $text = str_replace('ğ','g',$text);
        $text = str_replace('Ğ','G',$text);
        $text = str_replace('ş','s',$text);
        $text = str_replace('Ş','S',$text);
        $text = str_replace('ç','c',$text);
        $text = str_replace('Ç','C',$text);
        $text = str_replace('ö','o',$text);
        $text = str_replace('Ö','O',$text);
        $text = str_replace('ı','i',$text);
        $text = str_replace('İ','I',$text);

        // Strip html tags
        $text=strip_tags($text);
        // Replace non letter or digits by -
        $text = preg_replace('~[^\pL\d]+~u', '-', $text);
        // Transliterate
        setlocale(LC_ALL, 'en_US.utf8');
        $text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);
        // Remove unwanted characters
        $text = preg_replace('~[^-\w]+~', '', $text);
        // Trim
        $text = trim($text, '-');
        // Remove duplicate -
        $text = preg_replace('~-+~', ',', $text);
        // Lowercase
        $text = strtolower($text);
        // Check if it is empty
        if (empty($text)) { return 'n-a'; }
        // Return result
        return $text;
    }

我正在写这样的文字

数据会这样变化

php tinymce character turkish
4个回答
4
投票

你尝试过entity_encoding吗?

entity_encoding : "raw",

https://www.tiny.cloud/docs/configure/content-filtering/#entity_encoding


1
投票

如果您查看输入这些土耳其字符时创建的 HTML,我怀疑您没有得到您期望的结果,并且处理它的代码可能不会执行您期望的操作。

这些土耳其语字符不属于正常的 UTF-8 字符集(TinyMCE 默认值),因此它们会被编码。 当我将您的内容放入 TinyMCE 中时,它会创建以下 HTML:

Türkçe Ürün

请注意,每个土耳其语字符均已编码 (http://fiddle.tinymce.com/qmhaab)。

您的服务器端代码似乎想要替换“非字母”字符并删除“不需要的”字符。 在我看来,您的代码正在破坏编码字符,因为与号(

&
)和分号(
;
)已从内容中删除。


0
投票

感谢您的所有回答。我已经用这段代码解决了问题。

$check_data = array('ü','Ü','ö','Ö','Ç','ç');
$change_data = array('ü','Ü','ö','Ö','Ç','ç'); 
$new_data = str_replace($check_data,$change_data,$description);

0
投票

使用数字编码。例如,它将 ü 编码为 ̈ 并且可以完美工作。

tinymce.init({
.........................,
  entity_encoding : 'numeric'
});
© www.soinside.com 2019 - 2024. All rights reserved.