BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / www-technology / #12221同步于 2011/2/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖

会PHP的请进,请教一下

mop
2011/2/17镜像同步18 回复
下面是一个电话号码识别的PHP接口, 第一个问题:它的原理是什么,怎么应用在其他图片中?(默认的是赶集网的图片) 第二个问题:怎么实现 www.xxxx.com/test.php?http://bj.ganji.com/tel/5463013757650d6c5e31093e563c51315b6c5c6c5237.png 这样来传递要识别的图片地址。 高手没空的话,指点一二也行,非常感谢! <?php /** * 电话号码识别. * @author by zsc for 2010.03.24 */ class gjPhone{ protected $imgPath;//图片路径 protected $imgSize;//图片大小 protected $hecData;//分离后数组 protected $horData;//横向整理的数据 protected $verData;//纵向整理的数据 function __construct($path){ $this->imgPath = $path; } /** * 颜色分离转换... * * @param unknown_type $path * @return unknown */ public function getHec() { $size = getimagesize($this->imgPath); $res = imagecreatefrompng($this->imgPath); for($i=0; $i < $size[1]; ++$i) { for($j=0; $j < $size[0]; ++$j) { $rgb = imagecolorat($res,$j,$i); $rgbarray = imagecolorsforindex($res, $rgb); if($rgbarray['red'] < 125 || $rgbarray['green']<125 || $rgbarray['blue'] < 125) { $data[$i][$j]=1; }else{ $data[$i][$j]=0; } } } $this->imgSize = $size; $this->hecData = $data; } /** * 颜色分离后的数据横向整理... * * @return unknown */ public function magHorData() { $data = $this->hecData; $size = $this->imgSize; $z = 0; for($i=0; $i<$size[1]; ++$i) { if(in_array('1',$data[$i])){ $z++; for($j=0; $j<$size[0]; ++$j) { if($data[$i][$j] == '1'){ $newdata[$z][$j] = 1; }else{ $newdata[$z][$j] = 0; } } } } return $this->horData = $newdata; } /** * 整理纵向数据... * * @return unknown */ public function magVerData($newdata){ for ($i=0;$i<132;++$i){ for($j=1;$j<13;++$j){ $ndata[$i][$j] = $newdata[$j][$i]; } } $sum = count($ndata); $c = 0; for ($a=0;$a<$sum;$a++){ $value = $ndata[$a]; if(in_array(1,$value)){ $ndatas[$c] = $value; $c++; }elseif(is_array($ndatas)){ $b = $c-1; if(in_array(1,$ndatas[$b])){ $ndatas[$c] = $value; $c++; } } } return $this->verData = $ndatas; } /** * 显示电话号码... * * @return unknown */ public function showPhone($ndatas){ $phone = null; $d = 0; foreach ($ndatas as $key => $val){ if(in_array(1,$val)){ foreach ($val as $k => $v){ $ndArr[$d].=$v; } } if(!in_array(1,$val)){ $d++; } } foreach ($ndArr as $key01 =>$val01){ $phone .= $this->initData($val01); } return $phone; } /** * 分离显示... * * @param unknown_type $dataArr */ function drawWH($dataArr){ if(is_array($dataArr)){ foreach ($dataArr as $key => $val){ foreach ($val as $k => $v){ if($v == 0){ $c .= "<font color='#FFFFFF'>".$v."</font>"; }else{ $c .= $v; } } $c .= "<br/>"; } } echo $c; } /** * 初始数据... * * @param unknown_type $numStr * @return unknown */ public function initData($numStr){ $result = null; $data = array( 0=>'000011111000001111111110011000000011110000000001110000000001110000000001110000000001011000000011011100000111000111111100000001110000', 1=>'011000000000011000000000111111111111111111111111', 2=>'001000000011011000000111110000001101110000011001110000011001110000110001111001100001011111100001000110000001', 3=>'001000000010011000000011110000000001110000000001110000110001110000110001011001110011011111011111000110001100', 4=>'000000001100000000111100000001111100000011101100000111001100001100001100011000001100111111111111111111111111000000001100000000000100', 5=>'111111000001111111000001110001000001110001000001110001100001110001100001110000110011110000111111000000001100', 6=>'000011111000001111111110011000110011110001100001110001100001110001100001110001100001010001110011010000111111000000001100', 7=>'110000000000110000000111110000111111110001110000110111000000111100000000111000000000111000000000', 8=>'000100011110011111111111110011100001110001100001110001100001110001100001110011100001011111111111000100011110', 9=>'001111000000011111100001110000110001110000110001110000110001110000110001011000100001011111100111000111111110000001110000', ); foreach ($data as $key => $val){ similar_text($numStr,$val,$pre); if($pre>95){//相似度95%以上 $result = $key; break; } } return $result; } } $imgPath = "http://bj.ganji.com/tel/5463013757650d6c5e31093e563c51315b6c5c6c5237.png"; $gjPhone = new gjPhone($imgPath); //进行颜色分离 $gjPhone->getHec(); //画出横向数据 $horData = $gjPhone->magHorData(); echo "===============横向数据==============<br/><br/><br/>"; $gjPhone->drawWH($horData); //画出纵向数据 $verData = $gjPhone->magVerData($horData); echo "<br/><br/><br/>===============纵向数据==============<br/><br/><br/>"; $gjPhone->drawWH($verData); //输出电话 $phone = $gjPhone->showPhone($verData); echo "<br/><br/><br/>===============电话==============<br/><br/><br/>".$phone; ?> 其实研究这个就是为了采集网站的电话号码,可是有些站太恶心了,多管齐下,就是不想让你采,但其实只是增加障碍罢了,高人总能笑傲的。 顺便秀下我的网站:鹰潭房产网
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
mop机器人#1 · 2011/2/17
第一个问题自己琢磨已经解决。
mop机器人#2 · 2011/2/17
居然两个都实现了,哈哈哈
xw2423机器人#3 · 2011/2/17
那自问自答下? 【 在 mop (记忆邮心) 的大作中提到: 】 : 居然两个都实现了,哈哈哈
Chon机器人#4 · 2011/2/17
自问自答也十大了,囧
hyu35机器人#5 · 2011/2/17
re 大囧 【 在 Chon (Chon) 的大作中提到: 】 : 自问自答也十大了,囧
ZMBird机器人#6 · 2011/2/18
这个貌似不是PHP问题吧,是模式识别问题,更确切的说应该是OCR。好在这个电话号码的数字比较简单。
nhstljh4机器人#7 · 2011/2/18
留名,过10点就没了~
bbeyes机器人#8 · 2011/2/18
十大呀
lszhc机器人#9 · 2011/2/18