草庐IT

php - unicode 模式下的 preg_split : delim_capture not working?

我正在尝试使用正则表达式将一大块中文文本拆分成句子。就我而言,句子分隔符是:全角句号。(0x3002)全角问号?(0xFF1F)全角感叹号!(0xFF01)现在,假设我的$str是这样的:$str="你好。你好吗?我是程序员,不太懂这个我的问题,希望大家能帮得上忙!一起加油吧!";我使用带有这些参数的preg_split:$str2=preg_split("/([\x{3002}\x{FF01}\x{FF1F}])/u",$str,PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY);$str2现在是一个数组,如下所示:array(3){[0]=>

url - 有什么方法可以避免为 IDN 域显示 "xn--"?

如果我使用诸如www.äöü.com之类的域,有什么方法可以避免它在用户中显示为www.xn--4ca0bs.com'浏览器?我猜像www.xn--4ca0bs.com这样的域名会给普通互联网用户带来很多困惑。 最佳答案 这完全取决于浏览器。事实上,国际化域名几乎是一种仅限于浏览器的技术。域名不能包含非ASCII字符,因此实际域名始终是Punycode编码的xn--...形式。由浏览器对此进行美化,但许多浏览器选择不这样做,以避免使用相似的Unicode字符进行域名欺骗。 关于url-有

php - 变音符号和 mb_substr 的问题

我正在使用mb_substr函数对带有变音符号的unicode字符串进行切片,但它的工作原理与我使用简单的substr函数一样。它将unicode字符分成两半,显示带问号的菱形。例如echomb_substr('ááááá',0,5);//Displaysáá�可能出了什么问题? 最佳答案 如果我不将编码指定为mb_substr的最后一个参数,我会遇到同样的问题:至少在我的服务器上,它默认为ISO-8859-1。但是,如果我将编码正确设置为UTF-8,它就可以正常工作:echomb_substr('ááááá',0,5,'UTF-8

php mb_strtolower 给出无效字符

以下代码会产生问题。var_dump($name);$name=mb_strtolower($name);var_dump($name);输出是string(32)"brazilandtechnology,SãoPaulo"string(32)"brazilandtechnology,s�opaulo"谁能解释一下为什么我得到的ã字符无效?我在这里做错了什么?mb_detect_encoding($name)saysitsUTF-8 最佳答案 mb_strtolower()有第二个参数来指定编码。如果省略,它使用mb_interna

php - 我如何将 preg_match 与字母数字和 unicode 接受一起使用?

我要用PHP建立一个多语言网站,需要有一个preg_match来传递所有Unicode字符和数字。即我需要它来传递英文字母、西类牙文字母、意大利文字母,正如您可能知道的那样,我不想传递其他字符,例如'"_-和...我想要这样的东西:$pattern='/^[unicodecharswithout\'-_;?]*$/u';if(!preg_match($pattern,$url))echo#error; 最佳答案 字母的Unicode属性是\pL所以在preg_match中:preg_match('/^\pL+$/u',$string

php - 如何让\uXXXX正确显示,使用PHP5

我继承了一个包含如下字符串的数据库:\u5353\u8d8a\u4e9a\u9a6c\u900a:\u7f51\u4e0a\u8d2d\u7269:\u5728\u7ebf\u9500\u552e\u56fe\u4e66\uff0cDVD\uff0cCD\uff0c\u6570\u7801\uff0c\u73u5177\uff0c\u5bb6\u5c45\uff0c\u5316\u5986问题是,如何才能在HTML页面中正确显示它?我正在使用PHP5来处理字符串。 最佳答案 1)我下载并安装了一个名为CODE2000的unicode

php - PHP 中的 json_encode() 返回转义 Unicode 中的汉字

我有一个简单的PHP一维数组。当我执行vardump(echovar_dump($a))时,我将其作为输出:array(3){[0]=>string(3)"尽"[1]=>string(21)"exhausted||toexhaust"[2]=>string(4)"jin3"}但是,当我对它进行json_encode(echojson_encode($a))时,我得到了这个:["\u5c3d","exhausted||toexhaust","jin3"]它返回的十六进制值是正确的,但我不知道如何阻止它给我十六进制值。我只是想让它显示角色。如果我echomb_internal_encodi

php - Laravel 5 模型 $cats 到数组 utf-8 JSON_UNESCAPED_UNICODE

当您有一个数组字段并将其保存在数据库中时,它会对数组执行漂亮的json_encode但没有JSON_UNESCAPED_UNICODE选项。数据最终是这样的:{"zh":"\u039d\u03ad\u03b1"}这几乎没用。解决方案当然是使用JSON_UNESCAPED_UNICODE标志进行json_encode。是否可以告诉Laravel在保存模型之前添加此选项?我试图避免使用setNameAttribute突变器,因为每次我有这种类型的字段时这样做都会很痛苦 最佳答案 只需覆盖asJson()方法即可。classCatexte

php utf8_encode - 字符前面加上\u

我有一个从数据库中获取的ISO字符串,当我对它进行utf8_encode时,我得到的是\u00f6而不是Ö。这混淆了ajaxes这个PHP脚本的javascript/html。为什么会有\u00f6而不是Ö?如何获得Ö?编辑:好的,我做了一些更多的实验,结果证明这是由utf8_encode和json_encode的组合引起的。尽管如果我根本不使用utf8_encode,该值在json中将为null。json_encode(array("city"=>utf8_encode("göteborg"))) 最佳答案 utf8_encode

php - 如何将 unicode 代码点转换为十六进制 HTML 实体?

我有一个数据文件(准确地说是一个Appleplist),它有Unicodecodepoints像\U00e8和\U2019。我需要将这些转换为有效的十六进制HTMLentities使用PHP。我现在正在做的是一长串:$fileContents=str_replace("\U00e8","è",$fileContents);$fileContents=str_replace("\U2019","’",$fileContents);这显然很可怕。我可以使用正则表达式将\U和所有尾随0转换为&#x,然后保留尾随;,但这似乎也很严厉。是否有一种干净、简单的方法来获取字符