1. 程式人生 > >PHP 匹配中文(UTF-8)

PHP 匹配中文(UTF-8)

匹配中文確實很蛋疼,網上找了好久,好多都很坑。
不過慢慢研究其實發現也是很難,主要是細節問題

中文的範圍

\u4e00-\u9fa5

如果直接這麼去匹配,百分百匹配不到

$pat = "/[\u4e00-\u9fa5]/";

Warning: preg_match(): Compilation failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 2
馬丹報錯!
你會發現js這些寫是行的通的,可是到了php就跑不靈了。why?

主要是因為\u在php中是不被識別的,這其實跟pecl風格的正則有關係!

so 改變下

查了下百度,發現轉成16進位制(這個還有待研究)

u (PCRE_UTF8)

此修正符啟用了一個 PCRE 中與 Perl 不相容的額外功能。模式字串被當成 UTF-8。

$pat = "/[\x{4e00}-\x{9fa5}]/u";

模式修飾符 u 一定要加上,此修正符啟用了一個 PCRE 中與 Perl 不相容的額外功能。模式字串被當成 UTF-8。

相關推薦

PHP 匹配中文UTF-8

匹配中文確實很蛋疼,網上找了好久,好多都很坑。 不過慢慢研究其實發現也是很難,主要是細節問題 中文的範圍 \u4e00-\u9fa5 如果直接這麼去匹配,百分百匹配不到 $pat = "/[\u4e00-\u9fa5]/"; Warning: p

2萬字庫PHP漢字轉拼音UTF-8

<?php $a1=array("\U4E00","\U4E01","\U4E02","\U4E03","\U4E04","\U4E05","\U4E06","\U4E07","\U4E08","\U4E09","\U4E0A","\U4E0B","\U4

VS2017控制檯輸出中文亂碼 ,怎麼設定編碼格式utf-8

vs2017預設編碼方式並不是UTF-8,當我們使用中文時,經常會發生亂碼。解決方法:工具->擴充套件和更新->聯機,然後搜尋ForceUTF8,如下圖: 安裝後原始碼檔案會強制儲存為帶

visual studio 檔案編碼格式UTF - 8

最近將程式碼從ubuntu轉到windows下用visual studio 2017編譯時遇到編碼格式的問題,因為在ubuntu下用visual studio code編輯程式碼時預設的格式是UTF-8,而visual studio中預設的是GB-2312,下面介紹下如何將visual st

編碼過濾器utf-8

web.xml配置 <!-- 編碼過濾器 --> <filter> <filter-name>Utf_8Filter</filt

JSP-技巧Eclipse預設新建檔案設定為適合中文的型別UTF-8——解決中文亂碼問題

JSP-(技巧)Eclipse預設新建檔案設定為適合中文的型別(UTF-8等)——解決中文亂碼問題 開頭先備註一下: UTF-8不容易亂碼; GBK雖然簡體繁體都支援,但容易亂碼。(試過幾次) 問題 每次新建.jsp檔案都是ISO什麼什麼的(此時無法儲存中

解決MySQL無法插入中文資料問題UTF-8編碼

我花了好幾個小時找過各種方法,最終靠這個方法實現了中文插入,我都快要喜極而泣了,分享給大家,真的很實用 一些關於檢視和修改字符集的MySQL知識: 檢視mysql的字符集:show variables where Variable_name like '%c

php 、html網頁解決亂碼問題設定utf-8

在<?php之後或者在 <body之後加入如下程式碼: header("Content-Type:text/html; charset=utf-8"); 或者 <meta

C++ 過濾出字串的中文GBK,UTF-8

最近在處理遊戲敏感詞之類的東西,為了加強遮蔽處理,所以需要過濾掉字串中的除漢字之外的是其他東西如數字,符號,英文字母等。 首先我查閱資料並寫了個函式: 示例:返回輸入字串中漢字的個數: std::string StrWithOutSymbol(const std::string &sourc

TensorFlow學習筆記UTF-8 問題解決 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte

show 學習 github red star ims fas can pri 我使用VS2013 Python3.5 TensorFlow 1.3 的開發環境 UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte

Python3 讀取配置文件UTF-8/UTF-8-BOM

bom【背景】  Windows 的記事本會給 UTF-8 文件添加 BOM 頭,很煩,搞個通用的讀取配置文件的代碼。【config.ini】[config] SrcRoot=D:\input DstRoot=D:\output【t.py】#encoding=utf-8 #author: walker #da

[eclipse]添加python默認模板,在首行添加編碼方式# -*- coding: utf-8 -*-

編碼方式 window pytho 編碼 分享圖片 技術分享 eclips 方式 pre 1、從eclipse的windows->preference 2、參照如下圖,添加指定的utf-8編碼方式 [eclipse]添加python默認模板,在首行添加編碼方式(#

編碼表ASCII碼&GB2312&gbk&unicode&UTF-8

                                          &

Python3 讀取 toml 配置檔案UTF-8/UTF-8-BOM

【吐槽】     先吐槽一下其他幾個配置檔案。 ini:表達能力不夠,比如不能表達列表等結構;沒有官方註釋符號,雖然一般以分號作為註釋符號。 json:沒有官方註釋符號,雖然某些第三方包提供了註釋結構。 yaml:語法比較複雜,可讀性不太高。 【toml 簡

txt格式文字解析注意:編碼格式必須是UTF-8

資料內容: { "code": 200, "message": "操作成功", "data":{         "carid":"1"         "action0":"1"         "action1":"1"         "action2":"0"   

java 檔案轉碼gb2315,gbk,utf-8csv,excel

最近做資料處理,需要將爬取的資料入庫,但是演算法提供的資料編碼格式和資料庫總是有出入,導致匯入的資料亂碼,所以寫一個轉碼程式,將檔案編碼轉為和資料庫一致。 package com.bjk.transcode; import java.io.FileInputStream; import j

字串和編碼ASCII 、Unicode、UTF-8

計算機只能處理數字,如果要處理文字,就必須先把文字轉換為數字才能處理。最早的計算機在設計時採用8個位元(bit)作為一個位元組(byte),所以,一個位元組能表示的最大的整數就是255(二進位制11111111=十進位制255),如果要表示更大的整數,就必須用更多的位元組。

Java讀取Unicode檔案UTF-8時碰到的BOM首字元問題,及處理方法

2015-18-01修改:增加 apache commons io 處理方法。 在Windows下用文字編輯器建立的文字檔案,如果選擇以UTF-8等Unicode格式儲存,會在檔案頭(第一個字元)加入一個BOM標識。 這個標識在Java讀取檔案的時候,不會被去掉,而且S

libiconv 交叉編譯和呼叫方法UTF-8和GB2312轉換

1、解壓 libiconv-1.14.tar.gz;進入libiconv-1.14目錄 2、./configure --host=arm-none-linux-gnueabi --enable-shared --enable-static --prefix=/opt/lib

字元編碼的發展ASCII、Unicode、utf-8

  最近一直在看廖雪峰老師的python網上教程,python內容簡單易理解,就沒整理,但是字串編碼作為一直困擾自己的問題,看了幾遍文章,最終還是將其整理如下,本篇部落格總結自廖雪峰老師的網上教程:http://www.liaoxuefeng.com/   首先我們要明確三者出現的時間依次是:ASCII,Un