匹配,过滤,随机,帮忙看下

wolaiyangni 2017-07-22 06:27:27

$c_left = array('哪里的学校好','训知道的是','知道的校','知道的习');
// 去分行符号
foreach($c_left as &$val) {
$val = str_replace("\n", "", $val);
}
$c_right = $c_left;
shuffle($c_right);
//var_dump($c_left);
//var_dump($c_right);
$res = array();
foreach($c_left as $key => $val_left) {
// 检查左侧是否匹配
$check = check_ci($val_left);
// 左侧匹配了,看看右侧
$val_right = $c_right[$key];
if($check) {
// 检测右侧是否匹配
$check = check_ci($val_right);
if($check) {
// 左侧匹配到,右侧匹配到,完蛋,继续匹配
$res[] = $val_left . '|' . rand_right_value($c_right);
} else {
// 左侧匹配到,右侧未匹配
$res[] = $val_left . '|' . $val_right;
}
} else {
// 因为左侧没匹配到,忽视右侧情况
$res[] = $val_left . '|' . $val_right;
}
}

//print_r($res);

foreach($res as &$val) {
echo $val."\r\n" ;//= str_replace("\n", "", $val);
}


// 随机从右侧里面获取一个值
function rand_right_value($c_right) {
shuffle($c_right);
foreach($c_right as $key => $val) {
// 检查左侧是否匹配
$check = check_ci($val);

if(!$check) {
return $val;
}
}
}


function check_ci($val_left) {
$ci = array('哪','训','校','习');
// 检查左侧是否匹配
$check = false;
foreach($ci as $cv) {
if(preg_match("/{$cv}/", $val_left)) {
$check = true;
break;
}
}
return $check;
}

=================================================
左右输出,| 符号间隔,不可同时包含同一个val
=================================================
两个arr,一个是关键词列表,一个是检测列表,输出结果为两排模式:

哪里的学校好学习|哪里的学校好怎么学 //此行错误,同时出现了“哪”
哪里的学校好 学习|学需要多少钱
培训班|哪里的学校好课程
要求:系统循环输出第一个arr,格式为上面,
如果左边出现了“哪” | 右边就不能出现“哪”;【$ci = array('哪','训','校','习');】
如果左边出现了“校“ | 右边就不能出现“校”;【$ci = array('哪','训','校','习');】

===========================================================
目前代码好像全部检测过滤了,比如:左边出现了”哪“,右边没有”哪“,右边出现其他key也被过滤了
导致最后没有循环出来
正确的应该是:
哪里的学校好学习|培训教程在课程
//目前是左侧有哪,右侧有训也被过滤了


...全文
162 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2017-07-23
  • 打赏
  • 举报
回复
运行结果: 哪里的学校好| 训知道的是| 知道的校| 知道的习| 有什么问题吗?
丿醉灬日臻 2017-07-23
  • 打赏
  • 举报
回复
这个编辑器是什么编辑器啊?求解答

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧