分享一个辅助函数,使用php尽可能识别出字符串中的数字,实现效果如下。
1 2 3 4 5 6 7 8 9 |
echo checkNatInt( '九百六十万' ); //普通中文数字,9600000 echo checkNatInt( '壹亿柒仟万零捌佰肆拾' ); //大写中文数字,170000840
echo checkNatInt( '学好PHP拿百万年薪' ); //句子中的数字, 1000000 echo checkNatInt( '今年春运发送人次达26亿' ); //数字和汉字混合出现,2600000000
echo checkNatInt( '两只小蜜蜂' ); //口语化数字,2 echo checkNatInt( '万万没想到' ); //复古的表达方式,100000000 |
注意事项
不支持小数
不支持大于PHP_INT_MAX的数
部分实现代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
function checkNatInt( $str ) { $map = array ( '一' => '1' , '二' => '2' , '三' => '3' , '四' => '4' , '五' => '5' , '六' => '6' , '七' => '7' , '八' => '8' , '九' => '9' , '壹' => '1' , '贰' => '2' , '叁' => '3' , '肆' => '4' , '伍' => '5' , '陆' => '6' , '柒' => '7' , '捌' => '8' , '玖' => '9' , '零' => '0' , '两' => '2' , '仟' => '千' , '佰' => '百' , '拾' => '十' , '万万' => '亿' , );
$str = str_replace ( array_keys ( $map ), array_values ( $map ), $str ); $str = checkString( $str , '/([\d亿万千百十]+)/u' );
$func_c2i = function ( $str , $plus = false) use (& $func_c2i ) { if (false === $plus ) { $plus = array ( '亿' => 100000000, '万' => 10000, '千' => 1000, '百' => 100, '十' => 10,); }
$i = 0; if ( $plus ) foreach ( $plus as $k => $v ) { $i ++; if ( strpos ( $str , $k ) !== false) { $ex = explode ( $k , $str , 2); $new_plus = array_slice ( $plus , $i , null, true); $l = $func_c2i ( $ex [0], $new_plus ); $r = $func_c2i ( $ex [1], $new_plus ); if ( $l == 0) $l = 1; return $l * $v + $r ; } }
return (int) $str ; } return $func_c2i ( $str ); }
//来自uct php微信开发框架,其中的checkString函数如下 function checkString( $var , $check = '' , $default = '' ) { if (! is_string ( $var )) { if ( is_numeric ( $var )) { $var = (string) $var ; } else { return $default ; } } if ( $check ) { return (preg_match( $check , $var , $ret ) ? $ret [1] : $default ); }
return $var ; } |

aphpdepentioncontiveContainerIsatoolThatManagesClassDeptions,增强codemodocultion,可验证性和Maintainability.itactsasaceCentralHubForeatingingIndections,因此reducingTightCightTightCoupOulplingIndeSingantInting。

选择DependencyInjection(DI)用于大型应用,ServiceLocator适合小型项目或原型。1)DI通过构造函数注入依赖,提高代码的测试性和模块化。2)ServiceLocator通过中心注册获取服务,方便但可能导致代码耦合度增加。

phpapplicationscanbeoptimizedForsPeedAndeffificeby:1)启用cacheInphp.ini,2)使用preparedStatatementSwithPdoforDatabasequesies,3)3)替换loopswitharray_filtaray_filteraray_maparray_mapfordataprocrocessing,4)conformentnginxasaseproxy,5)

phpemailvalidation invoLvesthreesteps:1)格式化进行regulareXpressecthemailFormat; 2)dnsvalidationtoshethedomainhasavalidmxrecord; 3)

tomakephpapplicationsfaster,关注台词:1)useopcodeCachingLikeLikeLikeLikeLikePachetoStorePreciledScompiledScriptbyTecode.2)MinimimiedAtabaseSqueriSegrieSqueriSegeriSybysequeryCachingandeffeftExting.3)Leveragephp7 leveragephp7 leveragephp7 leveragephpphp7功能forbettercodeefficy.4)

到ImprovephPapplicationspeed,关注台词:1)启用opcodeCachingwithapCutoredUcescriptexecutiontime.2)实现databasequerycachingusingpdotominiminimizedatabasehits.3)usehttp/2tomultiplexrequlexrequestsandredececonnection.4 limitsclection.4.4

依赖注入(DI)通过显式传递依赖关系,显着提升了PHP代码的可测试性。 1)DI解耦类与具体实现,使测试和维护更灵活。 2)三种类型中,构造函数注入明确表达依赖,保持状态一致。 3)使用DI容器管理复杂依赖,提升代码质量和开发效率。

databasequeryOptimizationinphpinvolVolVOLVESEVERSEVERSTRATEMIESOENHANCEPERANCE.1)SELECTONLYNLYNESSERSAYCOLUMNSTORMONTOUMTOUNSOUDSATATATATATATATATATATRANSFER.3)


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

Dreamweaver Mac版
视觉化网页开发工具

Dreamweaver CS6
视觉化网页开发工具

SublimeText3汉化版
中文版,非常好用