php函數中文
❶ php的GD庫imagettftext函數解決中文亂碼問題
本文實例講述了php的GD庫imagettftext函數解決中文亂碼問題的方法。分享給大家供大家參考。具體如下:
使用imagettftext寫中文時,常出現亂碼問題。解決方法是將中文字元串轉為utf-8格式即可。具體代碼如下(文件格式為gb2312):
復制代碼
代碼如下:<?php
$im
=
imagecreatefromjpeg('./1.jpg');
$w
=
imagesx($im);
$h
=
imagesy($im);
$green
=
imagecolorallocate($im,50,100,200);
$str
=
iconv('gb2312','utf-8','幸福就在身邊');//解決亂碼問題
imagettftext($im,16,0,200,100,$green,'./simhei.ttf',$str);
header("content-type:
image/jpeg");
imagejpeg($im);
imagedestroy($im);
?>
❷ php函數隨機文字
把你函數中的
string
函數換成
mbstring
的函數,就應該不會出亂碼了。
比如
strlen
換成
mb_strlen。
具體用到什麼函數不知道,所已不能作具體回答。
還有,可以用程序隨機生成漢字字串:
<?php
function
getChineseChar()
{
$unidec
=
rand(hexdec('4e00'),
hexdec('9fa5'));
$unichr
=
''
.
$unidec
.
';';
$zhcnchr
=
mb_convert_encoding($unichr,
"UTF-8",
"HTML-ENTITIES");
return
$zhcnchr;
}
function
getRandStr($len)
{
$str
=
'';
for($i=0;$i<$len;$i++)
{
$str
=
$str
.
getChineseChar();
}
return
$str;
}
echo
getRandStr(4);
?>
不過,如果是用於驗證,不推薦這種做法,因為隨機生成的漢字大多比較生僻,很難輸入。
❸ php如何分割中文字元串
php分割中文字元串,如果直接用PHP函數「str_split」來分割,會出現亂碼,因為中文字元長度和英文字元長度是不一樣的。
所以,可以建立新的函數先把字元轉成ASCII值,接著通過判斷不同字元的長度來正確分割中文字元串,把結果存入數組,最後再用PHP函數「join」在字元間插入百分號。
具體參考代碼如下:
<?php
functionstr_split_utf8($str){
$split=1;
$array=array();
for($i=0;$i<strlen($str)){
$value=ord($str[$i]);
if($value>127){
if($value>=192&&$value<=223)$split=2;
elseif($value>=224&&$value<=239)$split=3;
elseif($value>=240&&$value<=247)$split=4;
}else{
$split=1;
}
$key=NULL;
for($j=0;$j<$split;$j++,$i++){
$key.=$str[$i];
}
array_push($array,$key);
}
return$array;
}
$string="網路知道www..cn";
$arr1=str_split_utf8($string);
echojoin("%",$arr1);
?>
❹ 什麼是PHP的函數
PHP 用戶定義函數
除了內建的 PHP 函數,我們可以創建我們自己的函數。
函數是可以在程序中重復使用的語句塊。
頁面載入時函數不會立即執行。
函數只有在被調用時才會執行。
在 PHP 創建用戶定義函數
用戶定義的函數聲明以關單 "function" 開頭:
語法
function functionName() {
被執行的代碼;
}
注釋:函數名能夠以字母或下劃線開頭(而非數字)。
注釋:函數名對大小寫不敏感。
提示:函數名應該能夠反映函數所執行的任務。
在下面的例子中,我們創建名為 "writeMsg()" 的函數。打開的花括弧({)指示函數代碼的開始,而關閉的花括弧(})指示函數的結束。此函數輸出 "Hello world!"。如需調用該函數,只要使用函數名即可:
<?php
function writeMsg() {
echo "Hello world!";
}
writeMsg(); // 調用函數
?>
PHP 函數參數
可以通過參數向函數傳遞信息。參數類似變數。
參數被定義在函數名之後,括弧內部。您可以添加任意多參數,只要用逗號隔開即可。
下面的例子中的函數有一個參數($fname)。當調用 familyName() 函數時,我們同時要傳遞一個名字(例如 Bill),這樣會輸出不同的名字,但是姓氏相同:
<?php
function familyName($fname) {
echo "$fname Zhang.<br>";
}
familyName("Li");
familyName("Hong");
familyName("Tao");
familyName("Xiao Mei");
familyName("Jian");
?>
下面的例子中的函數有兩個參數($fname 和 $year):
<?php
function familyName($fname,$year) {
echo "$fname Zhang. Born in $year <br>";
}
familyName("Li","1975");
familyName("Hong","1978");
familyName("Tao","1983");
?>
PHP 默認參數值
下面的例子展示了如何使用默認參數。如果我們調用沒有參數的 setHeight() 函數,它的參數會取默認值:
<?php
function setHeight($minheight=50) {
echo "The height is : $minheight <br>";
}
setHeight(350);
setHeight(); // 將使用默認值 50
setHeight(135);
setHeight(80);
?>
PHP 函數 - 返回值
如需使函數返回值,請使用 return 語句:
<?php
function sum($x,$y) {
$z=$x+$y;
return $z;
}
echo "5 + 10 = " . sum(5,10) . "<br>";
echo "7 + 13 = " . sum(7,13) . "<br>";
echo "2 + 4 = " . sum(2,4);
?>
❺ PHP preg_match 函數怎麼匹配中文
<?php
//示例代碼:
$str='hello這里是phppreg_match正則匹配演示';
//UTF8編碼:正則表達式匹配中文;
if(preg_match('/[x{4e00}-x{9fa5}]+/u',$str)){
echo'匹配成功,有中文字元串!';
}else{
echo'沒有中文字元串。';
}
//GB2312,GBK編碼:正則表達式匹配中文;
if(preg_match("/^[".chr(0xa1)."-".chr(0xff)."A-Za-z0-9_]+$/",$str)){
echo'匹配成功,有中文字元串!';
}else{
echo'沒有中文字元串。';
}
?>
❻ php有木有 直接顯示星期幾(中文)的函數 我寫的這兩種都感覺好別扭
1.顯示中文星期的函數:
<?php
date_default_timezone_set('asia/shanghai');
echo '今天是'. date('Y年m月d日 '). ' 星期' . cnWeek(date('Y-M-d'));
function cnWeek($date)
{
$arr = array('天','一','二','三','四','五','六');
return $arr[date('w',strtotime($date))];
}
?>
2.讓時間一直走,一般使用javascript來完成,以下是代碼:
<html>
<head>
<title>當前時間js腳本,sky整理收集,站長特效歡迎您。</title>
</head>
<script language='JavaScript'>
var timerID = null;
var timerRunning = false;
function stopclock ()
{
if(timerRunning)
clearTimeout(timerID);
timerRunning = false;
}
function startclock ()
{
stopclock();
showtime();
}
function showtime () {
var now = new Date();
var hours = now.getHours();
var minutes = now.getMinutes();
var seconds = now.getSeconds()
var timeValue = "" +((hours >= 12) ? "下午 " : "上午 " )
timeValue += ((hours >12) ? hours -12 :hours)
timeValue += ((minutes < 10) ? ":0" : ":") + minutes
timeValue += ((seconds < 10) ? ":0" : ":") + seconds
document.clock.thetime.value = timeValue;
timerID = setTimeout("showtime()",1000);
timerRunning = true;
}
</script>
<body onload=startclock()>
<form name="clock">
<input name="thetime" style="font-size: 9pt;color:#000000;border:0px none; " size="12" />
</form>
</body>
</html>
❼ php "str_split"函數分割中文字元串亂碼問題……
一個解決方案.
測試發現,preg_split對中文(多位元組)的分隔符處理可能真的存在問題.
原因可能是正則匹配時不能正常分隔一個多位元組字元(猜測).
但我實驗用半形(英文)的分隔符就工作得很好.
於是
我在處理待分隔的文本前先對文本進行替換,把中文的句點和逗號都替換成英文半形的.然後再使用preg_split,暫時發現工作得不錯.
以下是我的測試代碼.
<?php
$test = <<<EOF
記者從有關人士處獲悉,嫦娥二號發射的各項准備工作全部就緒,昨日經專家組評審,衛星、火箭、發射場、測控等系統均情況正常,具備發射條件。今天起,西昌衛星發射中心的加註手將為火箭加註燃料。
據一位航天專家介紹,因為地球和月球都在轉動的緣故,所以地月之間的最佳交匯點每年僅出現3次,而這3次便是發射探月衛星的最佳節點,經過觀測,今年3次的出現時間分別為10月1日、10月2日和10月3日,而最佳發射窗口則是1日晚7時,2日晚8時和3日晚10時,其中國慶日晚7時為佳中之佳。
針對媒體稱10月1日發射窗口時間為晚6時59分57秒,該專家告訴本報記者,早3秒並非提前3秒發射,而是將這3秒時間預留出來,作為現場指揮員在發送倒計時口令的緩沖時間。(記者萬強)
EOF;
//$input = $_POST[$content]; //........................獲取要分割的字元串
$test = str_replace(",",',',$test);
$test = str_replace("。",'.',$test);
$mode="/[,|.]/s"; //......................用「逗號」 和 「句號」 分割字元串
$output = preg_split($mode,$test,-1);
print_r($output);
?>
============
樓主不防試試,我的代碼是gb2312的字串.
經測試在,字元串為UTF8時,也可以正常工作.
❽ PHP自定義函數獲取漢字首字母的方法
本文實例講述了PHP自定義函數獲取漢字首字母的方法。分享給大家供大家參考,具體如下:
首字母很重要,可以進行排序使用。
城市列表等等。
<?php
/*
*
Created
on
2016-12-1
*/
function
getFirstCharter($str)
{
if
(empty($str))
{
return
'';
}
$fchar
=
ord($str{0});
if
($fchar
>=
ord('A')
&&
$fchar
<=
ord('z'))
return
strtoupper($str{0});
$s1
=
iconv('UTF-8',
'gb2312',
$str);
$s2
=
iconv('gb2312',
'UTF-8',
$s1);
$s
=
$s2
==
$str
?
$s1
:
$str;
$asc
=
ord($s{0})
*
256
+
ord($s{1})
-
65536;
if
($asc
>=
-20319
&&
$asc
<=
-20284)
return
'A';
if
($asc
>=
-20283
&&
$asc
<=
-19776)
return
'B';
if
($asc
>=
-19775
&&
$asc
<=
-19219)
return
'C';
if
($asc
>=
-19218
&&
$asc
<=
-18711)
return
'D';
if
($asc
>=
-18710
&&
$asc
<=
-18527)
return
'E';
if
($asc
>=
-18526
&&
$asc
<=
-18240)
return
'F';
if
($asc
>=
-18239
&&
$asc
<=
-17923)
return
'G';
if
($asc
>=
-17922
&&
$asc
<=
-17418)
return
'H';
if
($asc
>=
-17417
&&
$asc
<=
-16475)
return
'J';
if
($asc
>=
-16474
&&
$asc
<=
-16213)
return
'K';
if
($asc
>=
-16212
&&
$asc
<=
-15641)
return
'L';
if
($asc
>=
-15640
&&
$asc
<=
-15166)
return
'M';
if
($asc
>=
-15165
&&
$asc
<=
-14923)
return
'N';
if
($asc
>=
-14922
&&
$asc
<=
-14915)
return
'O';
if
($asc
>=
-14914
&&
$asc
<=
-14631)
return
'P';
if
($asc
>=
-14630
&&
$asc
<=
-14150)
return
'Q';
if
($asc
>=
-14149
&&
$asc
<=
-14091)
return
'R';
if
($asc
>=
-14090
&&
$asc
<=
-13319)
return
'S';
if
($asc
>=
-13318
&&
$asc
<=
-12839)
return
'T';
if
($asc
>=
-12838
&&
$asc
<=
-12557)
return
'W';
if
($asc
>=
-12556
&&
$asc
<=
-11848)
return
'X';
if
($asc
>=
-11847
&&
$asc
<=
-11056)
return
'Y';
if
($asc
>=
-11055
&&
$asc
<=
-10247)
return
'Z';
return
null;
}
$firstChar
=
getFirstCharter('腳本之家');
print_r($firstChar);//輸出:J
?>
更多關於PHP相關內容感興趣的讀者可查看本站專題:《php常用函數與技巧總結》、《PHP數組(Array)操作技巧大全》、《php字元串(string)用法總結》、《PHP錯誤與異常處理方法總結》、《PHP基本語法入門教程》、《php面向對象程序設計入門教程》、《php+mysql資料庫操作入門教程》及《php常見資料庫操作技巧匯總》
希望本文所述對大家PHP程序設計有所幫助。