组保留的标签 余下为需要删除的标签
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
版权声明 本文原创作者:谷哥的小弟作者博客地址:http:blog.csdnlfdfhl scrcpy概述 scrcpy是免费开源的投屏软件,它支持将安卓手机屏幕投
2024-10-61930
修改 android 手机 hosts 文件的方法
参考链接:https:developer.mozillaen-USdocsArchiveFirefox_OSDeveloping_Firefox_OSmodifying_hosts_file参考链接
2024-10-6880
android 添加文件打开方式
比如通过文档查看器打开一个文本文件时,会弹出一个可用来打开的软件列表; 如何让自己的软件也出现在该列表中呢? 通过设置AndroidManifest.xml文件即可&
2024-10-6590
Android中打开本地doc、pdf、ppt、text等文件功能的实现
http:blog.csdnwangyang2698341articledetails20847469http:blog.csdnbaidu_34260638articledetails53120737?loca
2024-10-6770
dll文件可以在Android上用吗,在Android应用程序中使用dll文件
如果您有DLL的src文件,请尝试重新编译为ELF32共享对象,然后将其链接到您的Android代码( - 下面是Windows解决方案): set NDK_HOMEC:A
2024-10-6660
android存储文件数据恢复,教程:如何恢复安卓设备内置存储中已删除的文件
感谢网友mumu214的投稿: 大家好,本教程将指导你如何恢复从任何Android设备的内置存储中删除的文件。 在开始之前先介绍一些数据恢复方面的基础知识: 想必大家在平常使
2024-10-6570
android 手机远程助手,安卓远程桌面软件
安卓远程桌面助手ARDC是一款安卓远程桌面软件,用户可以在PC上控制安卓手机桌面,实现远程操控,这款软件显示画面非常清晰,并且手机无需ROOT&
2024-10-6670
js 访问android 路径,Android与JS进行交互传文件路径
webview+h5这种混合开发最近很火,其中最重要的大概就是java代码和js的交互了,刚接触这东西两天,写写收获。 新建一个assets文件夹,要与res这个文件夹同级,其中存放web项目。 先看android端 初始化webview
2024-10-6440
android trace、backtrace文件和火焰图的抓取与查看方法
trace 抓取方法 解压android trace抓取相关文件找到config.pbtx文件,连接手机push进去 # push config.pbtx ,datalocaltm
2024-10-61000
基于android的资源文件管理器
软 件 学 院 毕业实训报告 课题名称: android资源管理器 专 业: 软件设计(游戏开发方向) 班 级: 学 号&
2024-10-6720
Android DDMS的打开以及查看手机页面布局层次
ddms 查看android的界面布局层次 有时候看到一个比较好的界面或体验好的界面,就忍不住想看看其实现结果,那么可以通过DDMS工具来看相连设备层次以及使用哪些view。上图是查看微信
2024-10-6720
Android查看手机内部储存目录及数据库文件
我们平时开发的时候会经常用到文件缓存,常用的是手机内部储存和手机外部储存,手机内部存储主要包括APP安装后的一些文件,外部储存就是大家通常可以使用的空间,用来存点图片电影之类的。 当需要快速读取的缓存文件一般放在内部储存中,因为内部储存比
2024-10-6780
Android studio 怎样连接手机运行,Android studio连接手机调试
今天百度了一下如何在在Android studio如何在真机上运行,比较复杂,看了很多,现在给大家总结一下: 1、首先要将手机连接到电脑上&#x
2024-10-6410
Android中什么是Dex文件
在明白什么是Dex文件之前,要先了解一下JVM,Dalvik和ART。 JVM是JAVA虚拟机,使用运行JAVA字节码程序。 Dalvik是Google设计的用于Andr
2024-10-6720
.bat文件启动安卓(Android Studio)模拟器无效
网上很多文章讲的启动模拟器的命令是 D:AndroidSdktoolsemulator.exe -netdelay none -netspeed full -avd Pixel_4_API_29但是双击bat文件并没有效果。 这个
2024-10-6630
查看Android下某个进程打开了那些个文件(为了查unity打出的Android包)
做这个是为了查看unity打出的Android包在运行是都打开了什么文件然后发现了打开了n多份系统字体 1. 将Android Studio连接到 夜神模拟器中 用命令行cd到模拟器目录 F:yeshen_simulatorNox
2024-10-6760
Android中调用系统所装的软件打开文件
Intent intent new Intent();intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);设置intent的Action属性intent.setAction(Int
2024-10-6360
Android Studio完成设备文件浏览器和adb基本操作
一、设备文件浏览器 1.打开设备文件浏览器 单击菜单栏里的View–>Tool Windows–>Device File Explorer需要运行一个虚拟机或连接一个设备运行虚拟机后再次启动设备文件浏览器2.查
2024-10-6780
轻量化的yolov8部署到安卓Android手机端
一、pytorch环境配置和yolov8源码安装 首先在电脑上需要配置好pytorch环境,和yolov8源码的下载 然后针对yolov8做自己的轻量化改进 二、下载Android Studio和ncnn-and
2024-10-6550