PHP 中文大写数字 转成 数字代码

 更新时间:2016年11月25日 15:51  点击:1854

php教程 中文大写数字 转成 数字代码

echo "<pre>";
echo test('一十二亿七十一万五十一');
/*
create by piaofen
date: 2011-03-31
function: 中文大写数字转阿拉伯数字
*/
function chtonum($str='')
{
$unit = array('亿'=>100000000,'万'=>10000,'千'=>1000,'仟'=>1000,'百'=>100,'十'=>10);
$num = array('一'=>1,'二'=>2,'三'=>3,'四'=>4,'五'=>5,'六'=>6,'七'=>7,'八'=>8,'九'=>9);
$str = str_replace(array_keys($num),$num,$str);
$result = array();
$number = '';
preg_match_all('/[0-9]千[0-9]百[0-9]十[0-9]|[0-9]百[0-9]十[0-9]|[0-9]十[0-9]|[0-9]/ism',$str,$pnum);
foreach($pnum[0] as $val){
  $tmp = '';
  for($i=0;$i<mb_strlen($val,'utf-8');$i++){
   $s = mb_substr($val,$i,1,'utf-8');
   if(!is_numeric($s)){
    $k = $unit[$s];
    if(strlen($tmp)>=strlen($k)){
     preg_match('/([0-9]*)([0-9]{'.(strlen($k)-1).'})([0-9])/ism',$tmp,$n);
     $tmp = ($n[1]+$n[3]).$n[2];
    }else{
     $tmp = $tmp * $k;
    }
   }else if($i==(mb_strlen($val,'utf-8')-1)){
    $tmp += $s;
   }else{
    $tmp .= $s;
   }
  }
  $nnum[] = $tmp;
}
$result = str_replace(array_keys($unit),';',str_replace($pnum[0],$nnum,$str));
foreach(explode(';',$result) as $val){
  $number .= sprintf('%04d',$val);
}
return sprintf('%2u',$number);
}
 

php教程创建文件时存在文件自动重命名实现方法

<?php
function createfile($filename, $content = '')
{
    $fp = file_put_contents($filename, $content);
}
 
// 要创建的文件名称
$filename = 'www.txt';
 
if(file_exists($filename))
{
    // 打开当前目录
   $handle = opendir('./');
    $fileinfo = pathinfo($filename);
    //print_r($fileinfo);
    $files = array();
    while (false !== ($file = readdir($handle)))
    {
        if(preg_match_all("/{$fileinfo['filename']}(d*).{$fileinfo['extension']}/i", $file, $match))
        {
            $max = max($match[1]);
            if($max)
            {
                $createfile = $fileinfo['filename'] . ($max + 1) . '.' . $fileinfo['extension'];
            }
            else
            {
                $createfile = $fileinfo['filename'] . '1.' . $fileinfo['extension'];
            }
        }
    }
    createfile($createfile);
}
else
{
    createfile($filename);
}
?>

使用临时文件作记数器 方法二

<?php
function createfile($filename, $content = '')
{
    if(file_exists($filename . '.tmp'))
    {
        $num = (int) file_get_contents($filename . '.tmp') + 1;
        $fileinfo = pathinfo($filename);
        file_put_contents($fileinfo['filename'] . '(' . $num . ')' .$fileinfo['extension'], $content);
        file_put_contents($filename . '.tmp', $num);
    }
    else
    {
        file_put_contents($filename, $content);
        file_put_contents($filename . '.tmp', 1);
    }
}
createfile('test.txt');
?>

php教程 pcre正则表达式完全教程
预定义常量

preg_pattern_order

结果按照”规则”排序, 仅用于preg_match_all, 即$matches[0]是完整规则的匹配结果, $matches[1]是第一个子组匹配的结果
preg_set_order:

结果按照”集合”排序, 仅用于preg_match_all, 即$matches[0]保存第一次匹配结果的所有结果(包含子组)信息, $matches[1]保存第二次的结果信息
preg_offset_capture

在捕获的结果中, 不仅包含结果子串, 还会包含子串在原字符串中的位置.
preg_split_no_empty

告知preg_split仅返回非空的部分
preg_split_delim_capture

告知preg_split同时捕获规则中的括号表达式匹配到的内容
preg_split_offset_capture

如果设置了这个标记, 每次匹配得到的结果的offset位置将会被同时返回.
preg_no_error

如果preg_last_error调用后返回此值, 则表明正则没有错误
preg_internal_error

如果preg_last_error调用后返回此值, 则表明发生了pcre内部错误
preg_backtrack_limit_error

如果回溯次数超过预设的值, preg_last_error函数返回此值
preg_recursion_limit_error

如果递归次数超过预设的值, preg_last_error函数返回此值
preg_bad_utf8_error

如果preg的最后错误是由于异常的utf-8数据(仅在运行在utf-8模式正则表达式情况下)导致的, 那么preg_last_error返回此值
 

preg_bad_utf8_offset_error

如果偏移量与合法的utf-8代码(仅在运行在utf-8模式正则表达式情况下)的开始点不匹配, preg_last_error的调用返回此值
pcre_version

返回pcre版本号和发布日期.

模式修饰符

i        pcre_classes
大小写不敏感的修饰符
m      pcre_multiline
多行匹配, 默认情况下, pcre认为目标字符串是一组单行字符组成的(然而实际上它可能会包含多行). 元字符^仅匹配字符串的开始位置, 而元字符$则仅匹配字符串的末尾, 或者新行之前(除非设置了d修饰符). 这个修饰符和perl中工作一直, 使用后, ^和$会匹配每一行的开始和结尾
如果目标字符串中没有n字符或者模式中没有出现^和$, 则设置此修饰符是没有任何影响的.
s       pcre_dotall
用来增强字符类.(点号)的功能, 默认情况下, 点号匹配任意字符, 但不包括换行符及以后内容. 使用此修饰符后, 可以匹配任意字符包括换行符
x       pcre_extended
如果设置了这个修饰符, 模式中的空白字符, 除非被转义或者在一个字符类中, 否则都被忽略. 在一个未转义的#之后直到下一个换行符之间的内容都会被正则表达式引擎忽略以方便添加注释.
e       preg_replace_eval
使用此修饰符后, preg_replace的$replacement参数除了可以使用正常的反向引用来取得匹配值, 还可以在其中书写eval语法允许的字符串进行求值, 并将返回结果用于最终的替换.
a       pcre_anchored
如果设置了此修饰符, 模式被强制成为”anchored”(锚点), 也就是说约束使其始终从字符串的嘴前面开始搜索. 这个影响也可以通过构造适当的规则来实现(perl中只能这样实现)
d      pcre_dollar_endonly
如果设置了这个修饰符, $会匹配目标字符串的结尾之前, 而如果没有设置这个修饰符, 如果目标字符串最后一个字符时换行符, $就会匹配该换行符之前而不是字符串结尾之前.
如果设置了m修饰符, 则这个修饰符会被忽略. 这一点和perl不一致
s
当一个模式需要多次使用的时候, 我们为了获得更高的匹配效率, 值得花费一些时间对其进行分析. 如果设置了这个修饰符, 将会进行这个额外的分析. 当前, 这种对一个模式的分析仅仅适用于非锚点的匹配(即没有一个单一固定的开始字符)
u      pcre_ungreedy
这个修饰符逆转了贪婪的模式, 如果没有这个设置, 默认情况下的正则匹配时贪婪的, 量词后增加了?的模式是非贪婪的, 但是如果设置了这个修饰符, 则刚好相反.
这个规则与perl是不兼容的.
也可以在模式中使用?u来达到同样的效果
x       pcre_extra
这个修饰符启用了一个pcre中与perl不兼容的额外功能. 任意反斜线后面跟一个没有特殊含义的字符会导致一个错误, 以此来保留这些组合以备后期扩展.
默认情况下, 和perl一样, 反斜线后跟一个没有特殊含义的字符会以该字符原意解释.
当前没有任何其他特性受此修饰符控制
j        pcre_info_jchanged
与内部选项?j相同, 用来改变本地pcre_dupnames选项. 允许子组有重复的名字
u       pcre8
这个修饰符打开一个pcre中与perl不兼容的额外功能. 模式字符串被认为是utf-8的.

php教程小型数据库教程(不用mysql教程做网站)
include 'pdbm.php';

$timestart = explode(' ', microtime());
$timestart = $timestart[0] + $timestart[1];

$pdbm = new pdbm('test');
$pdbm->open(pdbm_creat | pdbm_rewd);

for ($i = 0; $i < 100000; $i++) {
    $pdbm->insert("key{$i}", "value{$i}");
}

$timetime = explode(' ', microtime());
$timetime = $timetime[0] + $timetime[1];

echo $timetime - $timestart;
//*/

读取数据方法

include 'pdbm.php';

$timestart = explode(' ', microtime());
$timestart = $timestart[0] + $timestart[1];

$pdbm = new pdbm('test');
$pdbm->open(pdbm_rewd);

$val = $pdbm->fetch('key9999');
if ($val == null) {
    echo 'not found</br>';
} else {
    echo $val."<br/>";
}

//$pdbm->delete('key100'); //delete data

$val = $pdbm->fetch('key100');
if ($val == null) {
    echo 'not found</br>';
} else {
    echo $val."<br/>";
}

$timetime = explode(' ', microtime());
$timetime = $timetime[0] + $timetime[1];

echo $timetime - $timestart;
//*/

下面提供二款关于php教程文件上传代码,有需要的朋友可以参考一下。

<?php
if ($_files['file']['error'] > 0) {
echo '!problem:';
switch ($_files['file']['error']) {
case 1 :
echo '文件大小超过服务器限制';
break;
case 2 :
echo '文件太大!';
break;
case 3 :
echo '文件只加载了一部分!';
break;
case 4 :
echo '文件加载失败!';
break;
}

exit;
}
if ($_files['file']['size'] > 1000000) {
echo '文件过大!';
exit;
}
if ($_files['file']['type'] != 'image/jpeg' && $_files['file']['type'] != 'image/gif') {
echo '文件不是jpg或者gif图片!';
exit;
}
$today = date("ymdhis");
$filetype = $_files['file']['type'];
if ($filetype == 'image/jpeg') {
$type = '.jpg';
}
if ($filetype == 'image/gif') {
$type = '.gif';
}
$upfile = 'upfile/' . $today . $type;
if (is_uploaded_file($_files['file']['tmp_name'])) {
if (!move_uploaded_file($_files['file']['tmp_name'], $upfile)) {
echo '移动文件失败!';
exit;
}
} else {
echo 'problem!';
exit;
}
echo '<h1>success!</h1><br>';
echo '文件大小:' . $_files['file']['size'] . '字节' . '<br>';
echo '文件路径:' . $upfile;
echo '<hr with="100%" />' . '<p>';
$dirr = 'upfile/';
$dir = opendir($dirr);
echo $dirr . '--listing:<ul>';
while ($file = readdir($dir)) {
echo "<li>$file</li>";
}
echo '</ul>';
closedir($dir);
?>

 

第二种:

<?php
if (empty ($_get[submit])) {
?>
<form enctype="multipart/form-data" action="<?php $_server['php_self']?>?submit=1" method="post">
send this file: <input name="filename" type="file">
<input type="submit" value="确定上传">
</form>
<?php

} else {
$path = "uploadfiles/"; //上传路径

//echo $_files["filename"]["type"];

if (!file_exists($path)) {
//检查是否有该文件夹,如果没有就创建,并给予最高权限
mkdir("$path", 0700);
} //end if
//允许上传的文件格式
$tp = array (
"image/gif",
"image/pjpeg",
"image/png"
);
//检查上传文件是否在允许上传的类型
if (!in_array($_files["filename"]["type"], $tp)) {
echo "格式不对";
exit;
} //end if
if ($_files["filename"]["name"]) {
$file1 = $_files["filename"]["name"];
$file2 = $path . time() . $file1;
$flag = 1;
} //end if
if ($flag)
$result = move_uploaded_file($_files["filename"]["tmp_name"], $file2);
//特别注意这里传递给move_uploaded_file的第一个参数为上传到服务器上的临时文件
if ($result) {
//echo "上传成功!".$file2;
echo "<script language='网页特效'>";
echo "alert("上传成功!");";
echo " location='add_aaa.php?pname=$file2'";
echo "</script>";
} //end if

}
?>
[!--infotagslink--]

相关文章

  • js URLdecode()与urlencode方法支持中文解码

    下面来介绍在js中来利用urlencode对中文编码与接受到数据后利用URLdecode()对编码进行解码,有需要学习的机友可参考参考。 代码如下 复制代码 ...2016-09-20
  • 金额阿拉伯数字转换为中文的存储过程

    Create Procedure AtoC @ChangeMoney Money as Set Nocount ON Declare @String1 char(20) Declare @String2 char(30) ...2016-11-25
  • c#中判断字符串是不是数字或字母的方法

    这篇文章介绍了C#判断字符串是否数字或字母的实例,有需要的朋友可以参考一下...2020-06-25
  • 金额阿拉伯数字转换为中文的自定义函数

    CREATE FUNCTION ChangeBigSmall (@ChangeMoney money) RETURNS VarChar(100) AS BEGIN Declare @String1 char(20) Declare @String2 char...2016-11-25
  • 关于Mysql中文乱码问题该如何解决(乱码问题完美解决方案)

    最近两天做项目总是被乱码问题困扰着,这不刚把mysql中文乱码问题解决了,下面小编把我的解决方案分享给大家,供大家参考,也方便以后自己查阅。首先:用show variables like “%colla%”;show varables like “%char%”;这两条...2015-11-24
  • C#实现猜数字游戏

    这篇文章主要为大家详细介绍了C#实现猜数字游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
  • C#读取中文文件出现乱码的解决方法

    这篇文章主要介绍了C#读取中文文件出现乱码的解决方法,涉及C#中文编码的操作技巧,非常具有实用价值,需要的朋友可以参考下...2020-06-25
  • Mysql在debian系统中不能插入中文的终极解决方案

    在debian环境下,彻底解决mysql无法插入和显示中文的问题Linux下Mysql插入中文显示乱码解决方案mysql -uroot -p 回车输入密码进入mysql查看状态如下:默认的是客户端和服务器都用了latin1,所以会乱码。解决方案:mysql>use...2013-10-04
  • 安卓开发之设置密码只能输入字母和数字的组合

    设置登录密码我们一般会有限制的如由什么组合了,下面我们来看一篇关于安卓开发之设置密码只能输入字母和数字的组合方法,具体的细节如下所示。 无论是电脑还是手机...2016-09-20
  • Windows服务器MySQL中文乱码的解决方法

    我们自己鼓捣mysql时,总免不了会遇到这个问题:插入中文字符出现乱码,虽然这是运维先给配好的环境,但是在自己机子上玩的时候咧,总得知道个一二吧,不然以后如何优雅的吹牛B。...2015-03-15
  • linux mint 下mysql中文支持问题

    一.mysql默认不支持中文,它的server和db默认是latin1编码.所以我们要将其改变为utf-8编码,因为utf-8包含了地球上大部分语言的二进制编码 1.关闭mysql服务 sudo /etc/init.d/mysql stop 2.修改mysql配置文件 mysql配...2015-10-21
  • php怎么用拼音 简单的php中文转拼音的实现代码

    小编分享了一段简单的php中文转拼音的实现代码,代码简单易懂,适合初学php的同学参考学习。 代码如下 复制代码 <?phpfunction Pinyin($_String...2017-07-06
  • php导出csv格式数据并将数字转换成文本的思路以及代码分享

    php导出csv格式数据实现:先定义一个字符串 存储内容,例如 $exportdata = '规则111,规则222,审222,规222,服2222,规则1,规则2,规则3,匹配字符,设置时间,有效期'."/n";然后对需要保存csv的数组进行foreach循环,例如复制代...2014-06-07
  • C#判断一个字符串是否是数字或者含有某个数字的方法

    这篇文章主要介绍了C#判断一个字符串是否是数字或者含有某个数字的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • php生成唯一数字id的方法汇总

    关于生成唯一数字ID的问题,是不是需要使用rand生成一个随机数,然后去数据库查询是否有这个数呢?感觉这样的话有点费时间,有没有其他方法呢?当然不是,其实有两种方法可以解决。 1. 如果你只用php而不用数据库的话,那时间戳+随...2015-11-24
  • Java连接数据库oracle中文乱码解决方案

    这篇文章主要介绍了Java连接数据库oracle中文乱码解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-05-16
  • C#将数字转换成字节数组的方法

    这篇文章主要介绍了C#将数字转换成字节数组的方法,涉及C#字符串操作的技巧,非常具有实用价值,需要的朋友可以参考下...2020-06-25
  • C++实现数字转换为十六进制字符串的方法

    这篇文章主要介绍了C++实现数字转换为十六进制字符串的方法,涉及C++操作数字与字符串转换的相关技巧,需要的朋友可以参考下...2020-04-25
  • php数字每三位加逗号的功能函数

    php实现数字格式化,数字每三位加逗号的功能函数,具体代码如下: function num_format($num){ if(!is_numeric($num)){ return false; } $num = explode('.',$num);//把整数和小数分开 $rl = $num[1];//小数部分的值...2015-10-23
  • FlashFXP连接站点中文显示乱码解决办法

    FlashFXP是一款常用的服务器客户连接软件了,我们可以通过FlashFXP来上传或下载文件,但有一些朋友使用FlashFXP时碰到中文目录或文件名乱码问题,那么要如何来解决呢?具体就...2016-10-10