導航:首頁 > 編程語言 > php字元串查找中文

php字元串查找中文

發布時間:2025-07-01 21:11:08

『壹』 php中 提取中文字元首個拼音字母

$fchar = ord($s0{0}); //獲取字元串的第一個位元組

//判斷是不是英文字元,如果是則直接返回該字母大寫
if ($fchar >= ord(「A」) and $fchar <= ord(「z」))return strtoupper($s0{0});

//以下代碼用字元編碼轉換函數,通過兩種字元集編碼轉換的對比,判斷字元串是哪種字元集
//最終取字元串為GB字元集
$s1 = @iconv(「UTF-8″, 「GBK」, $s0);
$s2 = @iconv(「GBK」, 「UTF-8″, $s1);
if ($s2 == $s0) {
$s = $s1;
} else {
$s = $s0;
}

//計算給出的字元串的前兩個位元組內碼,然後再根據結果判斷在GB字元集中的位置,從而根據位置與拼音的關系,最終得出拼音字母
$asc = ord($s{0}) * 256 + ord($s{1}) – 65536;

『U』、『V』對中文無效,以下是對H 拼音的計算:

if($asc>=-17922 and $asc<=-17418)return "H";

『貳』 php如何輸出中文json格式字元串

php如何輸出中文json格式字元串
如何對json格式的字元串進行轉換,php提供了兩個函數:
json_encode 對變數進行 JSON 編碼
json_decode 對 JSON 格式的字元串進行編碼

下面看個實例:
$arr = ['a', 'b', 'c'];echo json_encode($arr);

輸出為:
["a","b","c"]

但是,當我們在數組中放入中文的時候,就會出現問題:
$arr = [ '世界', '你好',
];echo json_encode($arr);

輸出的結果為:
["\u4e16\u754c","\u4f60\u597d"]

這個結果顯然不是我們想要的,但是為什麼出現這個呢?
因為當我們的值中包含中文時,php對他進行json編碼時底層會對中文進行unicode編碼,導致結果不可讀,那該怎麼解決呢?
方法一
可以利用 urlencode 和 urldecode 方法繞過這個轉碼為 unicode 的過程,先將中文欄位進行urlencode,然後json_encode,最後再用urldecode處理結果,便可以正常顯示中文。具體代碼如下:
$arr = [ '世界', '你好',
];echo urldecode(json_encode(array_map('urlencode', $arr)));

輸出結果為:
["世界","你好"]

方法二
自PHP5.4版本,官方就已經給Json新增了一個選項: JSON_UNESCAPED_UNICODE。加上這個選項後,就不會自動把中文編碼了。具體代碼如下:
$arr = [ '世界', '你好',
];echo json_encode($arr, JSON_UNESCAPED_UNICODE);
["世界","你好"]

看吧,這才是我們想要的結果 :)

『叄』 php關於截取中文字元串的問題

php中文亂碼的原因及解決方法
原因:1.php頁面語言本身的編碼類型不合適,這時候,你直接在腳本中寫的中文肯定是亂碼,不用說資料庫了;
解決方法:選擇'utf8'或者'薯鄭gb2312',這樣客戶瀏覽器會自動選擇並出現正確的中文顯示。注意:'utf8'或者'gb2312'都可以正確顯示中文的。
2.資料庫mysql中的編碼類型不正確。
解決方法:創建資料庫的時候,mysql
字元集選擇'utf8',mysql
連接校對選擇utf8_general_ci,這樣創建的資料庫用來存儲中文肯定沒有問題,
否則,你的中文首先在mysql中就是亂碼,更不要期望它會給你在php頁面中顯示正確。
3.與平時的腳本編輯握辯環境有關。比如,有些內容是自己用word寫的,有些是用記事本寫的,有些用editplus、ultraplus等文本編輯器。有時候就直接在dw中寫中文了,
這樣做不出亂碼才怪呢。
解決方法:盡量用同一種編輯器。如果是拷貝來得既有的內容,建議用ultraplus中的編碼轉換功能把它轉換成utf8或者gb2312。
到底轉換成什麼類型並不重要,關鍵要求你的php
web應用程序中的編碼要一致就行。
4.編程訪問
mysql時,建議添加段手缺一行代碼:mysql_query("set
names
'gbk'");
這是解決方法
我沒看懂你貼上來的程序
所以給你一些方法去解決亂碼的問題
希望可以幫得上

『肆』 UTF-8正則表達式如何匹配漢字,utf-8正則表達式_PHP教程

判斷輸入內容是否含有違法字元,請看下面代碼

$str = "編程";

if(!preg_match("/^[\x{4e00}-\x{9fa5}]+$/u",$str))

{

echo "您輸入的[".$str."]含有違法字元";

}

else

{

echo "您輸入的[".$str."]完全合法,通過!";

}

-----------------------

UTF-8匹配:在javascript中,要判斷字元串是中文是很簡單的。

比如:

代碼如下:

var str = "php編程";

if (/^[\u4e00-\u9fa5]+$/.test(str))

{

alert("該字元串全部是中文");

}

else

{

alert("該字元串不全部是中文");

}

php中,是用\x表示十六進制數據的。

於是,變換成如下的代碼:

代碼如下:

$str = "php編程";

if (preg_match("/^[\x4e00-\x9fa5]+$/",$str))

{

print("該字元串全部是中文");

}

else

{

print("該字元串不全部是中文");

}

貌似不報錯了,判斷的結果也正確,不過把$str換成「編程」兩字,結果卻還是顯示「該字元串不全部是中文」,看來這樣的判斷還是不夠准確。

重要:

查閱了《精通正則表達式》發現,對於[\x4e00-\x9fa5]這塊東西,自己做一個強化的解釋php的正則中, [\x4e00-\x9fa5],其實就是 字元和字元組的概念, \x{hex},表達一個16進制數, 需要注意的是hex 可以是1-2位的,也可以是4位的,但是如果是4位的必須加上大括弧,同時,如果是大於x{FF}的hex,必須和u 修飾符連用,不然會非法出錯

網上只能找到匹配全形字元的正則: ^[\x80-\xff]*^/ ,這里可以不加大括弧 [\u4e00-\u9fa5]可以匹配中文,但是PHP又不支持 不過,既然\x表示的十六進制數據,為什麼和js里邊提供的范圍\x4e00-\x9fa5不一樣呢?

於是我就換成了下邊的代碼,發現真的准確了:

代碼如下:

$str = "php編程";

if (preg_match("/^[\x{4e00}-\x{9fa5}]+$/u",$str))

{

print("該字元串全部是中文");

}

else

{

print("該字元串不全部是中文");

}

知道了php中utf-8編碼下用正則表達式匹配漢字的最終正確表達式——/^[\x{4e00}-\x{9fa5}]+$/u, 參考以上文章寫了如下一段測試代碼(復制以下代碼保存成.php文件)

<?php

$action = trim($_GET['action']);

if($action == "sub")

{

$str = $_POST['dir'];

if(!preg_match("/^[\x{4e00}-\x{9fa5}A-Za-z0-9_]+$/u",$str))

{

echo "您輸入的[".$str."]含有違法字元";

}

else

{

echo "您輸入的[".$str."]完全合法,通過!";

}

}

GBK:

代碼如下:

preg_match("/^[".chr(0xa1)."-".chr(0xff)."A-Za-z0-9_]+$/",$str); //GB2312漢字字母數字下劃線正則表達式

以上內容就是PHP中UTF-8正則表達式如何匹配漢字的全部內容,希望大家喜歡。

『伍』 php字元串查找位置 php字元串查找

在PHP中查找字元串的位置或判斷字元串是否存在的方法如下

  1. 使用strpos()函數查找字元串位置

    • strpos(string $haystack, mixed $needle [, int $offset = 0 ]): int|false
      • $haystack:要搜索的字元串。
      • $needle:要查找的字元串或字元。
      • $offset:可選參數,表示從$haystack的哪個位置開始搜索。
      • 返回值:如果找到$needle,則返回其在$haystack中第一次出現的位置(從0開始計數);如果未找到,則返回false。
  2. 判斷字元串中是否包含另一個字元串

    • 可以使用strpos()函數的返回值進行判斷。如果strpos()返回的位置不是false,則說明包含該字元串。
    • 示例代碼:if (strpos($haystack, $needle) !== false) { // 包含 }
  3. 使用strrpos()函數查找字元串最後一次出現的位置

    • strrpos(string $haystack, string $needle [, int $offset = 0 ]): int|false
      • 參數與strpos()類似,但返回的是$needle在$haystack中最後一次出現的位置。
  4. 使用strstr()函數判斷子串是否存在

    • strstr(string $haystack, mixed $needle [, bool $before_needle = false ]): string|false
      • $haystack:要搜索的字元串。
      • $needle:要查找的子串。
      • $before_needle:如果設置為true,則返回$needle之前的部分。
      • 返回值:如果找到$needle,則返回從$needle第一次出現位置到$haystack末尾的子串;如果未找到,則返回false。

注意事項

以上方法提供了在PHP中查找字元串位置或判斷字元串是否存在的多種方式,根據具體需求選擇合適的方法即可。

閱讀全文

與php字元串查找中文相關的資料

熱點內容
php漢字轉數字 瀏覽:705
紅米k40怎麼加密微信 瀏覽:814
蘋果電腦源碼修復 瀏覽:25
奧數巧演算法 瀏覽:426
未婚個稅app怎麼填寫 瀏覽:639
oppo程序加密鎖怎麼解 瀏覽:625
怎樣加密mkv文件 瀏覽:966
蚊子解壓玩偶 瀏覽:411
java正整數正則表達式 瀏覽:480
ios的王者號怎麼在安卓上登錄 瀏覽:742
精神分裂pdf 瀏覽:261
程序員用什麼品牌內存條 瀏覽:706
電腦伺服器設置ip地址 瀏覽:904
蘇州孕婦溯源碼燕窩即食 瀏覽:348
在線翻譯pdf文件 瀏覽:487
三豐雲伺服器nginx路徑 瀏覽:857
雲無盤伺服器配置 瀏覽:794
大貓解壓定格動畫 瀏覽:986
電子書pdf閱讀器 瀏覽:714
python推流 瀏覽:357