Слияние кода завершено, страница обновится автоматически
<?php
/**
* Author: liasica
* CreateTime: 16/1/5 16:08
* Filename: Unicode.php
* PhpStorm: yii2-helpers
*/
namespace liasica\helpers;
class Unicode
{
private $encodeStr; // 转义后的Unicode编码字符
private $decodeStr; // 未转义的Unicode编码字符
/**
* Unicode constructor.
* @param null $encodeStr
* @param null $decodeStr
*/
public function __construct($encodeStr = null, $decodeStr = null)
{
$this->encodeStr = $encodeStr;
$this->decodeStr = $decodeStr;
}
/**
* 把用户输入的文本转义(主要针对特殊符号和emoji表情)
* @return $this|null|string
*/
public function encode()
{
if (!is_string($this->decodeStr)) {
return $this->decodeStr;
}
if ($this->decodeStr == null) {
return '';
}
$text = json_encode($this->decodeStr); //暴露出unicode
//将emoji的unicode留下,其他不动,这里的正则比原答案增加了d,因为我发现我很多emoji实际上是\ud开头的,反而暂时没发现有\ue开头。
$text = preg_replace_callback("/(\\\u[ed][0-9a-f]{3})/i", function ($str) {
return addslashes($str[0]);
}, $text);
$this->encodeStr = json_decode($text);
return $this;
}
/**
* 解码转义后的Unicode
* @return $this
*/
public function decode()
{
$text = json_encode($this->encodeStr); //暴露出unicode
$text = preg_replace_callback('/\\\\\\\\/i', function ($str) {
return '\\';
}, $text); //将两条斜杠变成一条,其他不动
$this->decodeStr = json_decode($text);
return $this;
}
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )