php中英文
Ⅰ php截取字元串以及去掉html標記
$str="帶html的字元串";
$str2=strip_tags($str);
echo $str2; //已經去掉html 標
簽
Ⅱ php截取字元串之截取utf8或gbk編碼的中英文字元串示例
php中自帶strlen是返回的位元組數,對於utf8編碼的中文返回時3個,不滿足需求,下面給大家提供一個方法來完成這樣的功能
微博的發言有字數限制,其計數方式是,中文算2個,英文算1個,全形字元算2個,半形字元算1個。
php中自帶strlen是返回的位元組數,對於utf8編碼的中文返回時3個,不滿足需求。
mb_strlen
可以根據字元集計算長度,比如utf8的中文計數為1,但這不符合微博字數限制需求,中文必須計算為2才可以。
google了下,找到一個discuz中截取各種編碼字元的類,改造了下,已經測試通過.其中參數$charset
只支持gbk與utf-8。
代碼如下:
$a
=
"s@@你好";
var_mp(strlen_weibo($a,'utf-8'));
結果輸出為8,其中字母s計數為1,全形@計數為2,半形@計數為1,兩個中文計數為4。源碼如下:
代碼如下:
function
strlen_weibo($string,
$charset='utf-8')
{
$n
=
$count
=
0;
$length
=
strlen($string);
if
(strtolower($charset)
==
'utf-8')
{
while
($n
<
$length)
{
$currentByte
=
ord($string[$n]);
if
($currentByte
==
9
||
$currentByte
==
10
||
(32
<=
$currentByte
&&
$currentByte
<=
126))
{
$n++;
$count++;
}
elseif
(194
<=
$currentByte
&&
$currentByte
<=
223)
{
$n
+=
2;
$count
+=
2;
}
elseif
(224
<=
$currentByte
&&
$currentByte
<=
239)
{
$n
+=
3;
$count
+=
2;
}
elseif
(240
<=
$currentByte
&&
$currentByte
<=
247)
{
$n
+=
4;
$count
+=
2;
}
elseif
(248
<=
$currentByte
&&
$currentByte
<=
251)
{
$n
+=
5;
$count
+=
2;
}
elseif
($currentByte
==
252
||
$currentByte
==
253)
{
$n
+=
6;
$count
+=
2;
}
else
{
$n++;
$count++;
}
if
($count
>=
$length)
{
break;
}
}
return
$count;
}
else
{
for
($i
=
0;
$i
<
$length;
$i++)
{
if
(ord($string[$i])
>
127)
{
$i++;
$count++;
}
$count++;
}
return
$count;
}
}
Ⅲ 在Thinkphp 中怎麼實現中英文切換啊
我用一維數組寫個實例,看懂了再自己去改:
//數組
$info = array(
'id' => '1',
'content' => '你好',
'en_content' => 'welcome'
);
//循環對比
foreach($info as $key => $value){
if ( ereg('['.chr(0xa1).'-'.chr(0xff).']', $value) ){ //判斷是不是純中文,是為 true
//是純中文時,去相應的語言包中做對比,查找當前的中文 $value 對應的英文是什麼,並把找到的英文替換掉當前這個中文
$info[$key] = '匹配成功後的英文';
}elseif ( ereg('[a-zA-Z]', $value) ){ //判斷是不是純英文,是為true
//是純英文時,去相應的語言包中做對比,查找當前的英文 $value 對應的中文是什麼,並把找到的中文替換掉當前這個英文
$info[$key] = '匹配成功後的中文';
}else{
// echo '既不是純中文,也不是純英文,可能有數字混在其中,或者是id 值';
}
}
return $info; //最後直接返回$info 即為中英文互換後的數組
Ⅳ thinkphp實現多語言切換時,資料庫數據如何也實現多語言
有兩種情況,分析如下:
1、需要中英文切換內容較少
假設我們現在正在操作的是文章表,需要根據用戶的語言環境輸出中文或英文的文章內容。
在文章表中多添加一個欄位用於存儲英文的內容,發布文章的頁面,同時上傳中英文內容即可,然後服務端通過thinkphp的多語言標識來決定讀取中文內容或者英文內容。也可以在前端模板中進行識別。
2、需要中英文切換內容較多
如果某個數據表的多個欄位或者多個數據表都需要做中英文切換,顯然在數據表裡添加多個欄位的方式就不太合適了,那將導致數據表欄位太多,不方便管理,可以採用多數據表的方式,將內容完整的分為兩份。就是把涉及到中英文切換的數據表多拷貝一份而已,裡面的數據是英文的
。管理員後台,可以同時存儲中英文內容,也可以分開存儲,你自己決定就好,讀取時同樣使用thinkphp的多語言標識判斷用戶的語言環境,來決定查詢中文表還是英文表。
另外,如果整站都需要中英文切換,也可以做分布式資料庫!
一切根據實際需求決定!
Ⅳ 如何phpcms v9 多語言
因為phpcms v9的功能非常豐富,我們可以使用多種途徑來實現多語言,這里以實現一個中英雙語站為例來說下思路:
方法一、使用phpcms中的語言包動態切換中英文語言包實現多語言,想要什麼語言就創建什麼語言包即可,關鍵是要知道在做模板界面時裡面的文字不能直接寫死了而是使用L函數來調用對應的詞彙,比如「用戶中心」我們可以寫成「{L('member_center')}」;
方法二、使用phpcms的多站點功能來在後台創建兩個站點,並分別綁定對應的域名或目錄。然後一個使用英文模板一個使用中文模板即可;
位置:後台-設置-站點管理-添加站點。
方法三、安裝兩個phpcms系統但是使用一個phpsso模塊來實現用戶互通(在安裝系統時大概第三步有個選項是選擇「安裝全新的phpcms系統」還是「已有phpsso模塊」,第二次安裝時選擇後者即可),兩個系統分別是英文站點和中文站點。
PS:
1.語言包位置:/phpcms/languages/... 語言包以數組形式保存。
2.使用語言包來實現多語言與後兩種辦法相比只需要一套模板,但是限制是只能用於動態訪問,如果是要生成靜態頁還是使用後兩種辦法吧。
Ⅵ PHP 如何實現按字數分割中英文混雜字元串成數組
以下是我編寫的代碼,實現對中英文混雜字元進行分割:
<?php
function mbStrSplit ($string, $len=1) {
$start = 0;
$strlen = mb_strlen($string);
while ($strlen) {
$array[] = mb_substr($string,$start,$len,"utf8");
$string = mb_substr($string, $len, $strlen,"utf8");
$strlen = mb_strlen($string);
}
return $array;
}
header('Content-type:text/html;charset=utf-8');
$str = '我愛北京3我愛上海-我愛xianggang';
$r = mbStrSplit($str, 4);
echo '<pre>';
print_r($r);
echo '</pre>';
?>
運行結果:
Array
(
[0] => 我愛北京
[1] => 3我愛上
[2] => 海-我愛
[3] => xian
[4] => ggan
[5] => g
)