php判斷中英文,PHP判斷語句

本文目錄一覽:

PHP指定截取字符串中的中英文或數字字符的實例分享

我們在開發過程中,經常會碰到截取中文英文數字等的問題,大家知道中文所佔的字符和英文數字是不同的;然後我們就會在項目的common里寫一些日常的函數包含時間計算轉換和中英文字符截取的函數;比如截取中英文的函數沒個幾行代碼恐怕拿不下來的吧,現在就告訴大家一個簡單的(自己本地運行過的),如有問題,請大家多多指教

$c

=

‘ddaabbccaa’;

$d

=

‘地球需要我們每個人的愛護’;

$frist1

=

mb_substr(

$c,

0,

1

,”UTF-8″);

//

d

$delete_last1

=

mb_substr($d,

-1,1,”UTF-8″);

//

echo

$frist1.’+++’.$delete_last1.’br/’;

//

d+++護

$frist2

=

mb_substr(

$d,

0,

1

,”UTF-8″);

//

$delete_last2

=

mb_substr($d,

-1,1,”UTF-8″);

//

echo

$frist2.’+++’.$delete_last2.’br/’;

//

地+++護

$e

=

’11aa22cc33′;

$f

=

‘aa地球需要我們每個人的愛護’;

$g

=

‘地球需要我們每個人的愛護gg’;

$h

=

‘地球需要我們每個人的愛護’;

$first3

=

mb_substr(

$e,

0,

1

,”UTF-8″);

//

1

$last3

=

mb_substr(

$f,

0,

1

,”UTF-8″);

//

a

$delete_last3

=

mb_substr($f,

-1,1,”UTF-8″);

//

$delete_last4

=

mb_substr($g,

-1,1,”UTF-8″);

//

g

$frist4

=

mb_substr(

$g,

0,

1

,”UTF-8″);

//

$delete_last5

=

mb_substr($h,

-1,1,”UTF-8″);

//

echo

$first3.’+++’.$last3.’—‘.$delete_last3.’***’.$delete_last4.”.$frist4.’br/’;

//

1+++a—護***g地

echo

$last3.’…’.$delete_last3.’br/’;

//

a…護

echo

$frist4.’…’.$delete_last5.’br/’;

//

地…護

//

這樣不管字符串里是中英文數字等都是可以的無需判斷,如:

”地…護“

或者

“地…”

或者

“…護”

PS:過濾字符串中空格的方法

去除字符串首尾中英文空格的方法:

function

mbTrim($str)

{

return

mb_ereg_replace(‘(^( |

)+|( |

)+$)’,

”,

$str);

}

下面的正則驗證時過濾掉用戶輸入的連續空格,包括全角空格和半角空格

$user

=

mb_ereg_replace(‘^( |

)+’,

”,

$user);

$user

=

mb_ereg_replace(‘( |

)+$’,

”,

$user);

$age

=

mb_ereg_replace(‘^( |

)+’,

”,

$age);

$age

=

mb_ereg_replace(‘( |

)+$’,

”,

$age);

$method

=

mb_ereg_replace(‘^( |

)+’,

”,

$method);

$method

=

mb_ereg_replace(‘( |

)+$’,

”,

$method);

$address

=

mb_ereg_replace(‘^( |

)+’,

”,

$address);

$address

=

mb_ereg_replace(‘( |

)+$’,

”,

$address);

我用php寫的,我想判斷表單提交的內容是中文還是英文,要怎麼寫呢?

mb_strlen 無論中英文都算1

strlen 中文算2,英文算1,

接收內容之後mb_strlen($str) == strlen($str) 就是英文

mb_strlen($str) == 2*strlen($str),是中文

否則是混排。

有點投機的做法

php分割中英文字符串的幾種方

對一段文字按照字數進行分割,因為文字中可能是中英文混合的,而php函數strlen只能計算出字串的字節數,於是自己實現了幾個函數,分享下。

例1,計算字符總長度。

01    ?php    

02    function ccStrLen($str) #計算中英文混合a href=”/”target=”_blank” class=”infotextkey”字符串/a的長度    

03    {    

04    $ccLen=0;    

05    $ascLen=strlen($str);    

06    $ind=0;    

07    $hasCC=ereg(”[xA1-xFE]“,$str); #判斷是否有漢字    

08    $hasAsc=ereg(”[x01-xA0]“,$str); #判斷是否有ASCII字符    

09    if($hasCC  !$hasAsc) #只有漢字的情況    

10    return strlen($str)/2;    

11    if(!$hasCC  $hasAsc) #只有Ascii字符的情況    

12    return strlen($str);    

13    for($ind=0;$ind$ascLen;$ind++)    

14    {    

15    if(ord(substr($str,$ind,1))0xa0)    

16    {    

17    $ccLen++;    

18    $ind++;    

19    }    

20    else    

21    {    

22    $ccLen++;    

23    }    

24    }    

25    return $ccLen;    

26    }    

27    ?    

例2,從左側截取字符串。

01    ?php    

02    function ccStrLeft($str,$len) #從左邊截取中英文混合字符串    

03    {    

04    $ascLen=strlen($str); if($ascLen=$len) return $str;    

05    $hasCC=ereg(”[xA1-xFE]“,$str); #同上    

06    $hasAsc=ereg(”[x01-xA0]“,$str);    

07    if(!$hasCC) return substr($str,0,$len);    

08    if(!$hasAsc)    

09    if($len  0×01) #如果長度是奇數    

10    return substr($str,0,$len+$len-2);    

11    else    

12    return substr($str,0,$len+$len);    

13    $cind=0;$flag=0;$reallen=0;//實際取字節長    

14    while($cind$ascLen  $reallen$len)    

15    { //by     

16    if(ord(substr($str,$cind,1))0xA1){ //如果該字節為英文 則加一    

17    $cind++;    

18    }else{//否則 加2個字節    

19    $cind+=2;    

20    }    

21    $reallen++;    

22    }    

23    return substr($str,0,$cind);    

24    }    

25    ?    

例3,把給定文字,按切割數量存入數組(適合短篇文字,長文章可沒分隔一部分就直接處理一次)

view sourceprint?

01    ?php    

02    function SplitContent($content,$smslen){    

03    $str_tmp=$content;    

04    $arr_cont=array();    

05    $len_tmp=0;    

06    $i=0;//分割絕對位置    

07    while (strlen($str_tmp)0){    

08    $str_tmp=ccStrLeft($str_tmp,$smslen);    

09    array_push($arr_cont,$str_tmp);    

10    $i+=strlen($str_tmp);    

11    $str_tmp=substr($content,$i,strlen($content));    

12    }    

13    return $arr_cont;    

14    } //by     

15    ?    

測試:

1    ?php    

2    $str=’a計算中英文混合1234字符串的長度abcd’;    

3    echo $str.’的長度為:’.ccStrLen($str);    

4    echo ‘br’;    

5    $smslen=3;//截取長度    

6    print_r(SplitContent($str,$smslen));    

7    ?

php中是如何區分中英文及數字的,想把一字符串中中文、英文和數字拆分開,該如何實現

目前有兩種方式:

php詞典:這個可以參照dede的詞典。

插件:這個可以參考sphinx

原創文章,作者:IOTN,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/139723.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
IOTN的頭像IOTN
上一篇 2024-10-04 00:22
下一篇 2024-10-04 00:22

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • Python3支持多行語句

    Python3是一種高級編程語言,開發人員可以輕鬆地使用該語言編寫簡單到複雜的代碼。其中Python3支持多行語句,方便開發人員編寫複雜的代碼,提高代碼的可讀性和可維護性。 一、使…

    編程 2025-04-29
  • Python for循環語句打印九九乘法表

    本篇文章將詳細介紹如何使用Python的for循環語句打印九九乘法表。打印九九乘法表是我們初學Python時經常練習的一項基礎操作,也是編寫Python程序的基本能力之一。 1、基…

    編程 2025-04-29
  • Python中while語句和for語句的區別

    while語句和for語句是Python中兩種常見的循環語句,它們都可以用於重複執行一段代碼。然而,它們的語法和適用場景有所不同。本文將從多個方面詳細闡述Python中while語…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • Python中自定義函數必須有return語句

    自定義函數是Python中最常見、最基本也是最重要的語句之一。在Python中,自定義函數必須有明確的返回值,即必須要有return語句。本篇文章將從以下幾個方面對此進行詳細闡述。…

    編程 2025-04-29
  • Python中升序排列的if語句

    本文將為大家介紹Python中升序排列的if語句。首先,我們來看一下如何實現。 if a > b: a, b = b, a if b > c: b, c = c, b …

    編程 2025-04-29
  • Python輸出語句用法介紹

    Python作為一種高級編程語言,為編程帶來了極大的便利和快捷。而輸出語句則是Python編程中不可缺少的一部分,它能夠讓我們看到程序運行的結果、判斷程序的正確性和優化程序等。本文…

    編程 2025-04-28
  • 使用PHP foreach遍歷有相同屬性的值

    本篇文章將介紹如何使用PHP foreach遍歷具有相同屬性的值,並給出相應的代碼示例。 一、基礎概念 在講解如何使用PHP foreach遍歷有相同屬性的值之前,我們需要先了解幾…

    編程 2025-04-28
  • Python語句大全

    本文將詳細闡述Python語句大全,並給出代碼實例。 一、基本語句 Python基本語句包括賦值語句、條件語句、循環語句等,其中最基礎的是賦值語句。如下: a = 1 b = 2 …

    編程 2025-04-28

發表回復

登錄後才能評論