大家好,我有这段代码可以检查5个或更多连续数字:if(preg_match("/\d{5}/",$input,$matches)>0)returntrue;它适用于英语输入,但当输入字符串包含阿拉伯语/多字节字符时它会出错-即使输入文本中没有数字,它有时也会返回true。有什么想法吗? 最佳答案 您似乎在使用PHP。这样做:if(preg_match("/\d{5}/u",$input,$matches)>0)returntrue;注意表达式末尾的“u”修饰符。它告诉preg_*使用unicode模式进行匹配。
我正在使用mb_substr函数对带有变音符号的unicode字符串进行切片,但它的工作原理与我使用简单的substr函数一样。它将unicode字符分成两半,显示带问号的菱形。例如echomb_substr('ááááá',0,5);//Displaysáá�可能出了什么问题? 最佳答案 如果我不将编码指定为mb_substr的最后一个参数,我会遇到同样的问题:至少在我的服务器上,它默认为ISO-8859-1。但是,如果我将编码正确设置为UTF-8,它就可以正常工作:echomb_substr('ááááá',0,5,'UTF-8
您好,我实际上正在尝试从这样的字符串中替换所有非字母数字字符:mb_ereg_replace('/[^a-z0-9\s]+/i','-',$string);第一个问题是它不会从字符串中替换像"."这样的字符。其次,我想为该方法添加对所有用户语言的多字节支持。我该怎么做?任何帮助appriciated,非常感谢。 最佳答案 尝试以下操作:preg_replace('/[^\p{L}0-9\s]+/u','-',$string);当u标志用于正则表达式时,\p{L}(和\p{Letter})匹配任何任何Unicode字母类别中的字符。
我需要查明一个字符串是否只包含一个字母数字字符。显而易见的解决方案是检查长度和ASCII码(A-Z、a-z、0-9)——但问题是我我正在处理UTF-8字符串和重音字母,例如á、ř、č等是否有一种简单的方法来检查UTF-8字符是否为字母数字(拉丁字母,可能带有重音符号或数字)? 最佳答案 这很容易用regularexpression完成:$count=preg_match_all('/\w/u',$string);if($count===1){echo"Onealphanumericcharacterfound";}\w将匹配任何“单
我正在尝试检测字符串的字符编码,但无法得到正确的结果。例如:$str="€‚ƒ„…";$str=mb_convert_encoding($str,'Windows-1252','HTML-ENTITIES');//Now$strshouldbeaWindows-1252-encodedstring.//Let'sdetectitsencoding:echomb_detect_encoding($str,'Windows-1252,ISO-8859-1,UTF-8');该代码输出ISO-8859-1但它应该是Windows-125
我有一个太大而无法放入内存的文件,我需要从中删除某些字符(准确地说是控制字符)。我当前的函数如下所示:$old=fopen($file,'r');$new=fopen($tmpFile,'w');while(!feof($old)){fwrite($new,preg_replace('/[^\P{Cc}\t\r\n]/u','',fgets($old)));}rename($tmpFile,$file);这在大多数情况下都可以正常工作。一个可能的问题是fgets读取整行。我处理的一些文件实际上是巨大的单行文件,这仍然会导致内存问题。这可以使用fread修复,block大小为8192。但
从哪里可以获得PHP的所有多字节函数的完整列表?我需要检查我的应用程序并将非MB字符串函数切换为新的mb函数。 最佳答案 怎么样:http://us2.php.net/manual-lookup.php?pattern=mbhttp://us2.php.net/mbstringhttp://www.php.net/manual/en/ref.mbstring.php 关于php-在哪里可以获得PHP的所有多字节函数的完整列表?,我们在StackOverflow上找到一个类似的问题:
$userTb=newMy_Tb_User();//ChildofZend_Db_Table_Abstract$row=$userTb->find(9)->current();$row->name='STÖVER';$row->save();内部用户表第9行的名称列值ST被存储而不是STÖVER?Ö是UTF-8支持的德语字符。如果我使用phpmyadmin手动输入“STÖVER”,它会被正确存储。我在创建数据库适配器时也传递了值为utf8的字符集参数,但仍然没有成功! 最佳答案 如果您阅读utf8_encode的手册条目,它将ISO
我刚开始接触php,恐怕我需要一些帮助来弄清楚如何操作utf-8字符串。我正在使用ubuntu11.10x86,php版本5.3.6-13ubuntu3.2。我有一个utf-8编码的文件(vim:setencoding确认了这一点),然后我继续阅读它使用$file=fopen("file.txt","r");while(!feof($file)){$line=fgets($file);//...}fclose($file);使用mb_detect_encoding($line)报告UTF-8如果我这样做echo$line我可以在浏览器中正确看到该行(没有损坏的字符)所以我想浏览器和Ap
我试过:mb_strlen('普通话');strlen('普通话');都输出9,而实际上只有3个字符。字符计数的正确方法是什么? 最佳答案 你应该确保在第二个参数中指定编码即mb_strlen('普通话','UTF-8');参见manual 关于php-如何获得多字节字符的确切数量?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1436550/