组保留的标签 余下为需要删除的标签 unset($oldtag[$key]); } } } if (!empty($oldtag)) { $tagids = array(); foreach ($oldtag as $tagid => $tagname) { $tagids[] = $tagid; } well_oldtag_delete($tagids, $tid); } $r = well_tag_process($tid, $fid, $create_tag, $tagarr); return $r; } // 删除标签和绑定的主题 function well_oldtag_delete($tagids, $tid) { $pagesize = count($tagids); $arrlist = well_tag_find_by_tagids($tagids, 1, $pagesize); $delete_tagids = array(); // 删除 $tagids = array(); $n = 0; foreach ($arrlist as $val) { ++$n; if (1 == $val['count']) { // 只有一个主题 $delete_tagids[] = $val['tagid']; } else { $tagids[] = $val['tagid']; } } !empty($delete_tagids) and well_tag_delete($delete_tagids); $arlist = well_tag_thread_find_by_tid($tid, 1, $n); if ($arlist) { $ids = array(); foreach ($arlist as $val) $ids[] = $val['id']; well_tag_thread_delete($ids); } !empty($tagids) and well_tag_update($tagids, array('count-' => 1)); } // 标签数据处理 $arr=新提交的数组 $tagarr=保留的旧标签 function well_tag_process($tid, $fid, $new_tags = array(), $tagarr = array()) { if (empty($tid)) return ''; // 新标签处理入库 if ($new_tags) { $threadarr = array(); $tagids = array(); $i = 0; $size = 5; $n = count($tagarr); $n = $n > $size ? $size : $size - $n; foreach ($new_tags as $name) { ++$i; $name = trim($name); $name = stripslashes($name); $name = strip_tags($name); $name = str_replace(array(' ', '#', "@", "$", "%", "^", '&', '·', '<', '>', ';', '`', '~', '!', '¥', '……', ';', '?', '?', '-', '—', '_', '=', '+', '.', '{', '}', '|', ':', ':', '、', '/', '。', '[', ']', '【', '】', '‘', ' ', ' ', ' ', ' ', ' '), '', $name); $name = htmlspecialchars($name, ENT_QUOTES); if ($name && $i <= $n) { // 查询标签 $read = well_tag_read_name($name); if ($read) { // 存在 count+1 $tagids[] = $read['tagid']; } else { // 入库 $arr = array('name' => $name, 'count' => 1); $tagid = well_tag_create($arr); FALSE === $tagid and message(-1, lang('create_failed')); $read = array('tagid' => $tagid, 'name' => $name); } $tag_thread = array('tagid' => $read['tagid'], 'tid' => $tid); $threadarr[] = $tag_thread; $tagarr[$read['tagid']] = $read['name']; } } !empty($threadarr) and tag_thread_big_insert($threadarr); !empty($tagids) and well_tag_update($tagids, array('count+' => 1)); } $json = empty($tagarr) ? '' : xn_json_encode($tagarr); return $json; } ?>android

Android手机投屏利器scrcpy

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http:blog.csdnlfdfhl scrcpy概述 scrcpy是免费开源的投屏软件&#xff0c;它支持将安卓手机屏幕投

2024-10-61930

android 添加文件打开方式

比如通过文档查看器打开一个文本文件时&#xff0c;会弹出一个可用来打开的软件列表&#xff1b; 如何让自己的软件也出现在该列表中呢&#xff1f; 通过设置AndroidManifest.xml文件即可&

2024-10-6590

android 手机远程助手,安卓远程桌面软件

安卓远程桌面助手ARDC是一款安卓远程桌面软件&#xff0c;用户可以在PC上控制安卓手机桌面&#xff0c;实现远程操控&#xff0c;这款软件显示画面非常清晰&#xff0c;并且手机无需ROOT&

2024-10-6670

js 访问android 路径,Android与JS进行交互传文件路径

webview+h5这种混合开发最近很火,其中最重要的大概就是java代码和js的交互了,刚接触这东西两天,写写收获。 新建一个assets文件夹,要与res这个文件夹同级,其中存放web项目。 先看android端 初始化webview

2024-10-6440

基于android的资源文件管理器

软 件 学 院 毕业实训报告 课题名称&#xff1a; android资源管理器 专 业&#xff1a; 软件设计&#xff08;游戏开发方向&#xff09; 班 级&#xff1a; 学 号&

2024-10-6720

Android DDMS的打开以及查看手机页面布局层次

ddms 查看android的界面布局层次 有时候看到一个比较好的界面或体验好的界面&#xff0c;就忍不住想看看其实现结果&#xff0c;那么可以通过DDMS工具来看相连设备层次以及使用哪些view。上图是查看微信

2024-10-6720

Android查看手机内部储存目录及数据库文件

我们平时开发的时候会经常用到文件缓存,常用的是手机内部储存和手机外部储存,手机内部存储主要包括APP安装后的一些文件,外部储存就是大家通常可以使用的空间,用来存点图片电影之类的。 当需要快速读取的缓存文件一般放在内部储存中,因为内部储存比

2024-10-6780

Android中什么是Dex文件

在明白什么是Dex文件之前&#xff0c;要先了解一下JVM&#xff0c;Dalvik和ART。 JVM是JAVA虚拟机&#xff0c;使用运行JAVA字节码程序。 Dalvik是Google设计的用于Andr

2024-10-6720

Android Studio完成设备文件浏览器和adb基本操作

一、设备文件浏览器 1.打开设备文件浏览器 单击菜单栏里的View–>Tool Windows–>Device File Explorer需要运行一个虚拟机或连接一个设备运行虚拟机后再次启动设备文件浏览器2.查

2024-10-6780

轻量化的yolov8部署到安卓Android手机端

一、pytorch环境配置和yolov8源码安装 首先在电脑上需要配置好pytorch环境&#xff0c;和yolov8源码的下载 然后针对yolov8做自己的轻量化改进 二、下载Android Studio和ncnn-and

2024-10-6550