新人!!字符串处理的问题。。。 本帖最后由 vcbidkkk 于 2011-09-07 23:51:29 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没看明白,中文日期换成数字??$ynsj="二○一一年九月五日";变成$ynsj="2011/9/5";什么意思呢? $StrY="二○一一年九月五日";$NumberArray=array('1'=>'一','2'=>'二','3'=>'三','4'=>'四','5'=>'五','6'=>'六','7'=>'七','8'=>'八','9'=>'九','0'=>'○');$NumberArray=array_flip($NumberArray);$StrArray=array();$StrArray=str_split($StrY,2);$Str='';foreach ($StrArray as $Value){ if (array_key_exists($Value,$NumberArray)){ $Str=$Str.$NumberArray[$Value]; }}echo $Str;多写了个步骤. $NumberArray=array_flip($NumberArray); 数组自己换一下key和value 就不需要这个了. 笨就笨点吧...咔咔.... 我上面写的 思路有啦 干嘛还要改那么久...这孩子...$StrY="二○一一年十月二十一日";$Y=substr($StrY,0,strpos($StrY,'年'));//年$M=substr($StrY,strlen($Y)+2,strpos($StrY,'月')-2-strlen($Y));//月$D=substr($StrY,strpos($StrY,'月')+2,strlen($StrY)-strlen($M)-strlen($Y)-6);//日$NumberArray=array('1'=>'一','2'=>'二','3'=>'三','4'=>'四','5'=>'五','6'=>'六','7'=>'七','8'=>'八','9'=>'九','0'=>'○','10'=>'十','11'=>'十一','12'=>'十二','20'=>'二十','30'=>'三十');$NumberArray=array_flip($NumberArray);$StrArray=array();$YearArray=str_split($Y,2);//年$YStr='';foreach ($YearArray as $Value){ if (array_key_exists($Value,$NumberArray)){ $YStr=$YStr.$NumberArray[$Value]; }}//月份$MStr='';if (array_key_exists($M,$NumberArray)){ $MStr=$NumberArray[$M];}//日期if (count($D)<6){ if (array_key_exists($D,$NumberArray)){ $DStr=$NumberArray[$D]; }else{ $First=substr($D,0,4); $Second=substr($D,4); if (array_key_exists($First,$NumberArray)){ $First=$NumberArray[$First]; } if (array_key_exists($Second,$NumberArray)){ $Second=$NumberArray[$Second]; } $DStr=intval($First)+intval($Second); }}echo '年'.$YStr.'月'.$MStr.'日'.$DStr; 你写的行了;帮我看下用||为什么得不到值呀?<?php$StrY="一九一八年十二月二十六日";$NumberArray=array('1'=>'一','2'=>'二','3'=>'三','4'=>'四','5'=>'五','6'=>'六','7'=>'七','8'=>'八','9'=>'九','0'=>'○','10'=>'十','20'=>'二十');$NumberArray=array_flip($NumberArray);print_r($NumberArray);$StrArray=array();$StrArray=str_split($StrY,2);$Str='';foreach ($StrArray as $Value){if (array_key_exists($Value,$NumberArray)){$Str=$Str.$NumberArray[$Value];if($Value="10"||$Value="20"||$Value="30")$yy=strpos($Str,$Value);}}echo $Str."<br>";echo $yy;?> 单独if($Value="10")是能得到值的但是用||就没有了是什么原因啊? 我的foreach 循环了每一位 所以你的就重复了 比如 十一月 循环了三次就变成了 十 一 十一...所以我后来拆分了年月日... 注意 if ($xxx=='xxx') 不是 = 这里不要弄错啦 //================if(($Value=="10")||($Value=="20")||($Value=="30")) $yy=strpos($Str,$Value);//=================因为没有嘛你加上这个就不报错了 但是没有值的.咔咔 后面的改成if (isset($yy))echo $yy; 网上找到过一个用ord判断字符是否中文的,>0ax1,这个方法我试了下,感觉好像也不行,会乱码.看来处理这方面目前也没有很好的完善的方法.只能暂时处理,无法完美解决. 咨询学习语方向面的问题?求助 高分请教,lamp服务器配置问题 zend studio 8 错误提示 做这样的网站 前期需要做哪些? 谁二次开发过UCenter 这样的滑动效果怎么做的??? phpMyAdmin密码忘记有什么办法吗? 利用php作简单的搜索引擎:怎么在被搜索网站的log中出现这样的字符 Baiduspider+(+http://www.baidu.com/search/spider.htm) 问个问题(在线等),关于IP与proxy 100分~有新邮件后短信通知怎样实现? 求助:写入水印时利用imagejpeg()函数读出图像时出现乱码 用伪静态实现二级域名
$ynsj="二○一一年九月五日";变成$ynsj="2011/9/5";什么意思呢?
$NumberArray=array('1'=>'一','2'=>'二','3'=>'三','4'=>'四','5'=>'五','6'=>'六','7'=>'七','8'=>'八','9'=>'九','0'=>'○');
$NumberArray=array_flip($NumberArray);$StrArray=array();
$StrArray=str_split($StrY,2);$Str='';
foreach ($StrArray as $Value){
if (array_key_exists($Value,$NumberArray)){
$Str=$Str.$NumberArray[$Value];
}
}echo $Str;多写了个步骤. $NumberArray=array_flip($NumberArray); 数组自己换一下key和value 就不需要这个了.
$StrY="二○一一年十月二十一日";
$Y=substr($StrY,0,strpos($StrY,'年'));//年
$M=substr($StrY,strlen($Y)+2,strpos($StrY,'月')-2-strlen($Y));//月
$D=substr($StrY,strpos($StrY,'月')+2,strlen($StrY)-strlen($M)-strlen($Y)-6);//日
$NumberArray=array('1'=>'一','2'=>'二','3'=>'三','4'=>'四','5'=>'五','6'=>'六','7'=>'七','8'=>'八',
'9'=>'九','0'=>'○','10'=>'十','11'=>'十一','12'=>'十二','20'=>'二十','30'=>'三十');
$NumberArray=array_flip($NumberArray);
$StrArray=array();
$YearArray=str_split($Y,2);
//年
$YStr='';
foreach ($YearArray as $Value){
if (array_key_exists($Value,$NumberArray)){
$YStr=$YStr.$NumberArray[$Value];
}
}
//月份
$MStr='';
if (array_key_exists($M,$NumberArray)){
$MStr=$NumberArray[$M];
}
//日期
if (count($D)<6){
if (array_key_exists($D,$NumberArray)){
$DStr=$NumberArray[$D];
}else{
$First=substr($D,0,4);
$Second=substr($D,4);
if (array_key_exists($First,$NumberArray)){
$First=$NumberArray[$First];
}
if (array_key_exists($Second,$NumberArray)){
$Second=$NumberArray[$Second];
}
$DStr=intval($First)+intval($Second);
}
}
echo '年'.$YStr.'月'.$MStr.'日'.$DStr;
帮我看下用||为什么得不到值呀?
<?php
$StrY="一九一八年十二月二十六日";
$NumberArray=array('1'=>'一','2'=>'二','3'=>'三','4'=>'四','5'=>'五','6'=>'六','7'=>'七','8'=>'八','9'=>'九','0'=>'○','10'=>'十','20'=>'二十');
$NumberArray=array_flip($NumberArray);
print_r($NumberArray);$StrArray=array();
$StrArray=str_split($StrY,2);$Str='';
foreach ($StrArray as $Value){
if (array_key_exists($Value,$NumberArray)){
$Str=$Str.$NumberArray[$Value];
if($Value="10"||$Value="20"||$Value="30")
$yy=strpos($Str,$Value);
}
}
echo $Str."<br>";
echo $yy;
?>
if($Value="10")是能得到值的但是用||就没有了是什么原因啊?
我的foreach 循环了每一位 所以你的就重复了 比如 十一月 循环了三次就变成了 十 一 十一...
所以我后来拆分了年月日...
//================
if(($Value=="10")||($Value=="20")||($Value=="30"))
$yy=strpos($Str,$Value);
//=================
因为没有嘛你加上这个就不报错了 但是没有值的.咔咔
后面的改成
if (isset($yy))
echo $yy;