业务需求
在使用OCR查找字符的过程中,有多种查找条件。
例如:
1、完全匹配
2、开头匹配
3、结尾匹配
4、中间匹配
5、部分匹配
如何封装一个函数,实现同时支持以上匹配规则呢?
假设完整的字符串是“无线局域网”。
子字符串要对应上面的匹配规则,用以下内容来表示:
完全匹配:无线局域网
开头匹配:无线(.*)
结尾匹配:(.*)局域网
中间匹配:无线(.*)网
部分匹配:无线
实现
温馨提示:此处内容需要登录后才能查看!
难点就在于,开头匹配、结尾匹配、中间匹配,究竟如何实现?
下面是飞云花一晚上的时间测试编写出来的代码:
/**
* @brief: 检测字符串是否包含子字符串
* @param {*} $content 完整的字符串
* @param {*} $searchPattern 子字符串,支持(.*)的匹配符。例如,原字符串为“无线局域网”,可使用“无线(.*)”或者“(.*)局域网”或者“无线(.*)网”来进行模糊匹配
* @param {*} $isDim 是否模糊匹配。子字符串含(.*)时,强制模糊匹配
* @return boolean
*/
public function _findText($content, $searchPattern, $isDim = false)
{
if (strpos($searchPattern, '(.*)') !== false) {
if (strpos($searchPattern, '(.*)') === 0) {
$position = strpos($searchPattern, '(.*)');
if ($position !== false) {
$suffix = substr($searchPattern, $position + strlen('(.*)'));
if ($suffix) {
if (substr($content, -strlen($suffix)) === $suffix) {
return preg_match('/' . $searchPattern . '/', $content);
}
}
}
} else if (substr($searchPattern, -strlen('(.*)')) === '(.*)') {
$position = strpos($searchPattern, '(.*)');
if ($position !== false) {
$prefix = substr($searchPattern, 0, $position);
if ($prefix) {
if (strpos($content, $prefix) === 0) {
return preg_match('/' . $searchPattern . '/', $content);
}
}
}
} else {
return preg_match('/' . $searchPattern . '/', $content);
}
} else if ($isDim) {
return strpos($content, $searchPattern) !== false;
} else {
return preg_match('/^' . $searchPattern . '$/', $content);
}
return false;
}
后记
通过调用个方法,你可以进一步封装,让你使用OCR的过程中如虎添翼。
此外,你还可以将这个方法翻译成其他编程语言可用的方法。
下面列举几个实际调用的例子:
# 指定多个模糊的字符串,判断是否在抖阴首页
var_dump($iMouse->ocrFindText('首页|朋友|消息|我|直播|经验|同城|关注|商城|推荐|展开|全屏观看|橱窗|抢首评|收藏|分享', true));
# 指定多个模糊的字符串,判断是否在抖阴个人中心页面
var_dump($iMouse->ocrFindText('音号|获赞|观看历史|我的钱包|编辑资料|添加朋友', true));
# 指定多个模糊的字符串,查找"朋友推荐"的弹窗,找到就点击右上角的关闭按钮
var_dump($iMouse->ocrFindText('朋友推荐|朋友推荐(.*)', true, [130, 60, 260, 100], true, 3 * 1000, 327 - 197));
# 指定多个模糊的字符串,找到就返回第一个找到的字符串的坐标
$tabPoint = $iMouse->ocrFindTextP('作品|私密|推荐|收藏|被@|喜欢', true);
if ($tabPoint) {
$x = 50;
$y = $tabPoint['y'] + 100;
$iMouse->click($x, $y, 5 * 1000);
}
1. 官方交流QQ群,添加多个不批。建议使用安卓手机或电脑申请。
飞云脚本圈: 586333520
Auto.js学习交流③群:286635606
Auto.js学习交流②群:712194666(满员)
IOS免越狱自动化测试群:691997586
2. 盗版,破解有损他人权益和违法作为,请各位会员支持正版。
3. 本站部分资源来源于用户上传和网络搜集,如有侵权请提供版权证明并联系站长删除。
4.如未特别申明,本站的技术性文章均为原创,未经授权,禁止转载/搬运等侵权行为。
5.全站所有付费服务均为虚拟商品,购买后自动发货。售出后概不接受任何理由的退、换。注册即为接受此条款。
6.如果站内内容侵犯了您的权益,请联系站长删除。
飞云脚本 » iMouse免越狱自动化测试脚本开发(14)-php实现一个强大的字符串查找和匹配方法
飞云脚本圈: 586333520
Auto.js学习交流③群:286635606
Auto.js学习交流②群:712194666(满员)
IOS免越狱自动化测试群:691997586
2. 盗版,破解有损他人权益和违法作为,请各位会员支持正版。
3. 本站部分资源来源于用户上传和网络搜集,如有侵权请提供版权证明并联系站长删除。
4.如未特别申明,本站的技术性文章均为原创,未经授权,禁止转载/搬运等侵权行为。
5.全站所有付费服务均为虚拟商品,购买后自动发货。售出后概不接受任何理由的退、换。注册即为接受此条款。
6.如果站内内容侵犯了您的权益,请联系站长删除。
飞云脚本 » iMouse免越狱自动化测试脚本开发(14)-php实现一个强大的字符串查找和匹配方法