抓取结果
个人技术分享 个人技术分享 首页 关于 主题 影视解析 音乐 归档 留言 个人技术分享 首页 关于 主题 影视解析 音乐 归档 留言 个人技术分享 刷新页面会随机【个人信息流样式】 置顶 个人技术分享 集成微信分享功能(微信朋友圈、微信朋友、QQ、微博等) 2年前 赞 评论 28个赞 【檒♀紜】: 有qq api文档的链接不,还有就是普通用户好像无法回复 【檒♀紜】: 想问一下通过qq号查询qq信息[头像、名称]是怎么实现的,其次这个网页有点卡 【檒♀紜】: 测试+1 摊主。: 评论不起了吗 千青: 测试 评论(7) 【檒♀紜】 2年前 说道: 有qq api文档的链接不,还有就是普通用户好像无法回复 2年前 回复 【檒♀紜】 2年前 说道: 想问一下通过qq号查询qq信息[头像、名称]是怎么实现的,其次这个网页有点卡 2年前 回复 【檒♀紜】 2年前 说道: 测试+1 2年前 回复 摊主。 2年前 说道: 评论不起了吗 2年前 回复 千青 2年前 说道: 测试 2年前 回复 摊主。 2年前 说道: 看看 2年前 回复 111111 2年前 说道: 看看 2年前 回复 取消回复 在此浏览器中保存我的显示名称、邮箱地址和网站地址,以便下次评论时使用。 置顶 个人技术分享 wordpress 主题 hankin 新增登录注册、用户中心 已用户QQ号切入 制作用户中心 2年前 赞 评论 24个赞 顾惜: 真不错 顾惜: 好看 □ _Ceo、: 1111好 xian: 这个主题是免费的嘛? 宏财水暖商城: 赞一个👍 评论(8) 顾惜 2年前 说道: 真不错 2年前 回复 顾惜 2年前 说道: 好看 2年前 回复 □ _Ceo、 2年前 说道: 1111好 2年前 回复 xian 2年前 说道: 这个主题是免费的嘛? 2年前 回复 宏财水暖商城 2年前 说道: 赞一个👍 2年前 回复 a释怀 2年前 说道: 牛逼 老哥什么时候发售 2年前 回复 乳糖不耐受 2年前 说道: niubi牛逼 2年前 回复 腾讯视频 2年前 说道: 牛逼 2年前 回复 取消回复 在此浏览器中保存我的显示名称、邮箱地址和网站地址,以便下次评论时使用。 置顶 个人技术分享 一款wordpress主题 hankin <?php echo "wordpress版本 6.0+ PHP版本7.0~8.0"; echo "记名发售,一份一域名,不得分享转让及二开。"; echo "1、新增QQ号登录方式"; echo "2、私人朋友圈排版"; echo "3、持续更新个人信息流样式(微信朋友圈、抖音、快手、小红书等)"; echo "4、支持暗黑、明亮模式"; echo "5、可在前端发布图文"; echo "6、集成 io Code Highlight 插件(代码高亮插件、支持经典编辑器、古腾堡扩展)"; echo "7、新增个人专属网易云音乐页面、音乐播放器(APlayer)"; echo "8、pjax无刷新体验"; echo "9、强大的后台设置"; echo "10、丰富的自定义页面"; /** -------------------- **/ 3年前 赞 评论 24个赞 抠脚大汉的摆烂人生: […] 平台主题名称介绍价格地址WPpix综合性最好的主题298DemoWPpink完成度高朋友圈499DemoWPhankin还在完善的主题noDemoTypicefox完成度高FreeDemoTypListen完成度高FreeDemoTypNabo小鸟风格FreeDemoTypzyyo三栏自适应现代时尚FreeDemoTypFlip仿pix主题noDemoTyppengyou单栏主题noDemoTypfriends单栏主题noDemoTyplan tyLAN程序TY版本39DemoHalopixpix授权移植主题169DemoZblogpyq单栏朋友圈noDemoZblogMoments轻社交朋友圈298DemoHugomoments单栏朋友圈noDemo程序lan程序有朋友圈外观99DemoDiscuz! 朋友圈式手机版Discuz!的纯手机版朋友圈98Demo […] YanZi-朋友圈: […] Demo […] 唤( . )醒: 好嘞,我都记下啦 评论(3) 唤( . )醒 2年前 说道: 好嘞,我都记下啦 2年前 回复 取消回复 在此浏览器中保存我的显示名称、邮箱地址和网站地址,以便下次评论时使用。 个人技术分享 GPT指令详细资料 1年前 赞 评论 评论(0) 暂无数据 取消回复 在此浏览器中保存我的显示名称、邮箱地址和网站地址,以便下次评论时使用。 个人技术分享 php操作cookie 转换数组形式,可取某一个值 if (!function_exists('ckStr2ckArr')) { function ckStr2ckArr($cookieValue,$key='') { if(empty($cookieValue)) return []; // 第一步:将 cookie 字符串拆分为键值对数组 $cookiePairs = explode(';', $cookieValue); // 创建一个关联数组来存储键值对 $cookieArray = []; foreach ($cookiePairs as $pair) { $pair = trim($pair); // 去除多余的空格 if ($pair) { list($k, $value) = explode('=', $pair, 2); $cookieArray[$k] = $value; } } //取指定的key值 if(!empty($key)) return $cookieArray[$key]; //取所有数组 return $cookieArray; } } $str = 'cna=Z10vHxyLLhkCAXPgqFaTMN9A; t=0dfd9e12691b5e686d8e406981bc179f; cookie2=113f243906b3776465e8fc246291d43d; xlly_s=1; _samesite_flag_=true; _tb_token_=548dd75bd1b39; unb=2209368547703; _hvn_lgc_=77; mtop_partitioned_detect=1; _m_h5_tk=518ab9b7ade30d1634c92f423962eb36_1729138819303; _m_h5_tk_enc=548aa63b41127caaeb4e9bc65e796a49; sdkSilent=1729216940928; sgcookie=E100MANykuWklerydA%2BMl9VIKBDu93fi6%2FAkc52GgwunEqZm9s%2F4QR3w70efJdK0OjoqaSSsURjd8rmp0UbOxRuxqtfyCuinoz28cswnbcjUUfk%3D; csg=96db0be1; havana_lgc2_77=eyJoaWQiOjIyMDkzNjg1NDc3MDMsInNnIjoiM2I1OTA0MDEzYTljZTcwZTRkZDkwYTQ1YzkzYjgxYzEiLCJzaXRlIjo3NywidG9rZW4iOiIxcEprcmNFY3FXa3l3U1RnY2hhT1U0dyJ9; havana_lgc_exp=1731722711974; isg=BHd3EOiN3F5lmFlq1jMGY7UyBm3BPEuetKiDGckl5cateJK60QzK7iOTWtgmkCMW; tfstk=gtErVp23SDVj2CSshxnEQC-n2_n-D0f1tkGIKJ2nFbcoAahntJFxdHw3VWPU_7-7OJf8TklmM2aWVWNeT7NjZ3wSNSl31SZI-6n7gSa0k_C-O8MUGr4Aw_EUpHk3KWB-OTQbe8nKx11_YGw8eWEySDXjrIXnLv1_7crXm8nKx19XxNsae50nOCBExtomdYJox2cl3jDsi3DHqvAc3vhmx30nrqAmevkk-vV3ntkKiXDL382H0AglCB0NDGfWA4cgEj-HbdHrrewWRh-a0Yuzx8cVL9rqU4lilG5xelygElHUvOYETzzuNxFFbso0gy2nuo1kfXaaCk3Uq9pS9zMtqYPhjFG0u-q-5-pPI-ija-DTu1--VRz0VqEGG3FUC7rE57scEWnoKW3TA1K-ZJ2TXPiNYFogg-qt-kCvvXabKko8sst492jrHBHmRXqLzBYnrxHq1tW4O4UiIC35k2YpJqmt3f6SFeLKrWMq1TgBJe3mtxl1Fw5..'; //转换数组 $arr = ckStr2ckArr($newStr); dump($arr); //取数组中某一个值 $arr = ckStr2ckArr($newStr,'cookie2'); dump($arr);die; 1年前 赞 评论 评论(0) 暂无数据 取消回复 在此浏览器中保存我的显示名称、邮箱地址和网站地址,以便下次评论时使用。 个人技术分享 php操作cookie字符串,替换对应值 将原始字符串中的unb和cookie2的值替换 if (!function_exists('ckStrReplace')) { function ckStrReplace($cookieValue,$replacements) { if(empty($cookieValue)) return ''; if(empty($replacements) || !is_array($replacements)) return ''; // 第一步:将 cookie 字符串拆分为键值对数组 $cookiePairs = explode(';', $cookieValue); // 创建一个关联数组来存储键值对 $cookieArray = []; foreach ($cookiePairs as $pair) { $pair = trim($pair); // 去除多余的空格 if ($pair) { list($key, $value) = explode('=', $pair, 2); $cookieArray[$key] = $value; } } // 第二步:根据 replacements 数组更新或者添加相应的值 foreach ($replacements as $key => $newValue) { // 如果数组中有这个键,进行替换 $cookieArray[$key] = $newValue; } // 第三步:重新组装成 cookie 字符串 $newCookieValue = ''; foreach ($cookieArray as $key => $value) { $newCookieValue .= $key . '=' . $value . '; '; } // 去掉最后的多余分号和空格 return rtrim($newCookieValue, '; '); } } 将原始字符串中的unb和cookie2的值替换 $str = 'cna=Z10vHxyLLhkCAXPgqFaTMN9A; t=0dfd9e12691b5e686d8e406981bc179f; cookie2=113f243906b3776465e8fc246291d43d; xlly_s=1; _samesite_flag_=true; _tb_token_=548dd75bd1b39; unb=2209368547703; _hvn_lgc_=77; mtop_partitioned_detect=1; _m_h5_tk=518ab9b7ade30d1634c92f423962eb36_1729138819303; _m_h5_tk_enc=548aa63b41127caaeb4e9bc65e796a49; sdkSilent=1729216940928; sgcookie=E100MANykuWklerydA%2BMl9VIKBDu93fi6%2FAkc52GgwunEqZm9s%2F4QR3w70efJdK0OjoqaSSsURjd8rmp0UbOxRuxqtfyCuinoz28cswnbcjUUfk%3D; csg=96db0be1; havana_lgc2_77=eyJoaWQiOjIyMDkzNjg1NDc3MDMsInNnIjoiM2I1OTA0MDEzYTljZTcwZTRkZDkwYTQ1YzkzYjgxYzEiLCJzaXRlIjo3NywidG9rZW4iOiIxcEprcmNFY3FXa3l3U1RnY2hhT1U0dyJ9; havana_lgc_exp=1731722711974; isg=BHd3EOiN3F5lmFlq1jMGY7UyBm3BPEuetKiDGckl5cateJK60QzK7iOTWtgmkCMW; tfstk=gtErVp23SDVj2CSshxnEQC-n2_n-D0f1tkGIKJ2nFbcoAahntJFxdHw3VWPU_7-7OJf8TklmM2aWVWNeT7NjZ3wSNSl31SZI-6n7gSa0k_C-O8MUGr4Aw_EUpHk3KWB-OTQbe8nKx11_YGw8eWEySDXjrIXnLv1_7crXm8nKx19XxNsae50nOCBExtomdYJox2cl3jDsi3DHqvAc3vhmx30nrqAmevkk-vV3ntkKiXDL382H0AglCB0NDGfWA4cgEj-HbdHrrewWRh-a0Yuzx8cVL9rqU4lilG5xelygElHUvOYETzzuNxFFbso0gy2nuo1kfXaaCk3Uq9pS9zMtqYPhjFG0u-q-5-pPI-ija-DTu1--VRz0VqEGG3FUC7rE57scEWnoKW3TA1K-ZJ2TXPiNYFogg-qt-kCvvXabKko8sst492jrHBHmRXqLzBYnrxHq1tW4O4UiIC35k2YpJqmt3f6SFeLKrWMq1TgBJe3mtxl1Fw5..'; dump($str); $newStr = ckStrReplace($str,[ 'unb' => '测试', 'cookie2' => '测试2', 'x5sec' => 'test2' ]); dump($newStr); 1年前 赞 评论 评论(0) 暂无数据 取消回复 在此浏览器中保存我的显示名称、邮箱地址和网站地址,以便下次评论时使用。 个人技术分享 php 操作cookie值 php 字符串cookie值数据拆分成数组,可以根据key的值进行替换,最后在组装成字符串 php 字符串cookie值数据拆分成数组,可以根据key的值进行替换,最后在组装成字符串 <?php // 示例 Cookie 字符串 $cookieString = "user=hankin;age=30;city=hanzhou"; // 将字符串解析为数组 parse_str($cookieString, $cookieArray); // 打印解析后的数组 print_r($cookieArray); // 替换特定键的值 $cookieArray['city'] = 'shanghai'; $cookieArray['age'] = '35'; // 打印替换后的数组 print_r($cookieArray); // 将数组重新组装为字符串 $newCookieString = http_build_query($cookieArray, '', ';'); // 打印重新组装后的字符串 echo $newCookieString; ?> 1年前 赞 评论 评论(0) 暂无数据 取消回复 在此浏览器中保存我的显示名称、邮箱地址和网站地址,以便下次评论时使用。 个人技术分享 js 引入vconsole 查看 console 日志 查看网络请求 查看页面 element 结构 查看 Cookies、localStorage 和 SessionStorage 手动执行 JS 命令行 自定义插件 介绍 vConsole 是一个轻量、可拓展、针对手机网页的前端开发者调试面板。 vconsole的解释是控制台;类似浏览器F12。 特性 查看 console 日志 查看网络请求 查看页面 element 结构 查看 Cookies、localStorage 和 SessionStorage 手动执行 JS 命令行 自定义插件 github vConsole的github地址 引入 使用 CDN 直接插入到 HTML (方法1) <script src="https://unpkg.com/vconsole@latest/dist/vconsole.min.js"></script> <script> // VConsole 默认会挂载到 `window.VConsole` 上 var vConsole = new window.VConsole(); </script> 使用 es6 webpack 引入 (方法2) 1.安装 npm install vconsole 或 cnpm install vconsole 2.引入 import VConsole from 'vconsole'; const vConsole = new VConsole(); // 接下来即可照常使用 `console` 等方法 console.log('Hello world'); 3.区分线上线下环境 if (isDebug) { new VConsole(); } 4.结束调试后,可移除掉 vConsole.destroy(); demo地址:http://wechatfe.github.io/vconsole/demo.html 还有一种工具-----eruda <script src="//cdn.bootcss.com/eruda/1.5.2/eruda.min.js"></script> <script>eruda.init();</script> 1年前 赞 评论 评论(0) 暂无数据 取消回复 在此浏览器中保存我的显示名称、邮箱地址和网站地址,以便下次评论时使用。 个人技术分享 fastadmin appendfieldlist 用法 添加页面 <!--赞助商--> <div class="form-group row"> <!-- <label class="control-label col-xs-12 col-sm-2">{:__('仪器产品')}:</label>--> <div class="col-xs-12"> <table class="table fieldlist" data-template="eventtpl" data-name="row[yiqi_images]" id="second-table"> <tr> <td>{:__('赞助厂家')}</td> <td>{:__('标题')}</td> <td>{:__('图片')}<span style="color: red">670*176</span></td> <td>{:__('链接')}</td> <td>{:__('类型')}<span style="color: red">1内部;2外部</span></td> <td width="100"></td> </tr> <tr> <td colspan="3"><a href="javascript:;" class="btn btn-sm btn-success btn-append"><i class="fa fa-plus"></i> {:__('Append')}</a></td> </tr> </table> <!--请注意实际开发中textarea应该添加个hidden进行隐藏--> <textarea name="row[yiqi_images]" class="form-control" style="display: none;"></textarea> <script id="eventtpl" type="text/html"> <tr class="form-inline"> <td><input type="text" style="width: 200px;" name="<%=name%>[<%=index%>][id]" class="form-control selectpage" data-params='{"custom[status]":1}' data-source="manystore/shop" data-field="name" value="<%=row.id%>" placeholder="请选择赞助厂家"/></td> <td><input type="text" name="<%=name%>[<%=index%>][title]" class="form-control" value="<%=row.title%>" placeholder="标题" size="10"/></td> <td> <input type="hidden" name="<%=name%>[<%=index%>][image]" id="c-image-<%=index%>" value="<%=row.image%>"> <!--@formatter:off--> <button type="button" id="faupload-image" class="btn btn-danger faupload upload-image" data-input-id="c-image-<%=index%>" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp" data-multiple="false"></button> <!--@formatter:on--> </td> <td><input type="text" name="<%=name%>[<%=index%>][url]" class="form-control" value="<%=row.url%>" placeholder="跳转链接" size="10"/></td> <td><input type="text" name="<%=name%>[<%=index%>][type]" class="form-control" value="<%=row.type%>" placeholder="填1内部,2外部" size="10"/></td> <td> <!--下面的两个按钮务必保留--> <span class="btn btn-sm btn-danger btn-remove"><i class="fa fa-times"></i></span> <span class="btn btn-sm btn-primary btn-dragsort"><i class="fa fa-arrows"></i></span> </td> </tr> </script> </div> </div> 编辑页面 <div class="form-group row"> <div class="col-xs-12"> <table class="table fieldlist" data-template="eventtpl" data-name="row[yiqi_images]" id="second-table"> <tr> <td>{:__('赞助厂家')}</td> <td>{:__('标题')}</td> <td>{:__('图片')}<span style="color: red">670*176</span></td> <td>{:__('链接')}</td> <td>{:__('类型')}<span style="color: red">1内部;2外部</span></td> <td width="100"></td> </tr> <tr> <td colspan="3"><a href="javascript:;" class="btn btn-sm btn-success btn-append"><i class="fa fa-plus"></i> {:__('Append')}</a></td> </tr> </table> <!--请注意实际开发中textarea应该添加个hidden进行隐藏--> <textarea name="row[yiqi_images]" class="form-control" style="display: none;">{$row.yiqi_images|htmlentities}</textarea> <script id="eventtpl" type="text/html"> <tr class="form-inline"> <td><input type="text" style="width: 150px;" name="<%=name%>[<%=index%>][id]" class="form-control selectpage" data-params='{"custom[status]":1}' data-source="manystore/shop" data-field="name" value="<%=row.id%>" placeholder="请选择赞助厂家"/></td> <td><input type="text" style="width: 100px;" name="<%=name%>[<%=index%>][title]" class="form-control" value="<%=row.title%>"/></td> <td> <input type="hidden" style="width: 100px;" name="<%=name%>[<%=index%>][image]" id="c-image-<%=index%>" value="<%=row.image%>"> <button type="button" id="faupload-image" class="btn btn-danger faupload upload-image" data-input-id="c-image-<%=index%>" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp" data-multiple="false" <%if(row.image){%>style="background-image: url('<%=Fast.api.cdnurl(row.image)%>')"<%}%>></button> </td> <td><input type="text" name="<%=name%>[<%=index%>][url]" class="form-control" value="<%=row.url%>"/></td> <td><input type="text" style="width: 80px;" name="<%=name%>[<%=index%>][type]" class="form-control" value="<%=row.type%>"/></td> <td> <!--下面的两个按钮务必保留--> <span class="btn btn-sm btn-danger btn-remove"><i class="fa fa-times"></i></span> <span class="btn btn-sm btn-primary btn-dragsort"><i class="fa fa-arrows"></i></span> </td> </tr> </script> </div> </div> js代码 add: function () { $(document).on("fa.event.appendfieldlist", "#second-table .btn-append", function (e, obj) { //绑定动态下拉组件 Form.events.selectpage(obj); //绑定日期组件 Form.events.datetimepicker(obj); //绑定上传组件 Form.events.faupload(obj); //上传成功回调事件,变更按钮的背景 $(".upload-image", obj).data("upload-success", function (data) { $(this).css("background-image", "url('" + Fast.api.cdnurl(data.url) + "')"); }) }); Controller.api.bindevent(); }, edit: function () { Template.helper("Fast", Fast); $(document).on("fa.event.appendfieldlist", "#second-table .btn-append", function (e, obj) { //绑定动态下拉组件 Form.events.selectpage(obj); //绑定日期组件 Form.events.datetimepicker(obj); //绑定上传组件 Form.events.faupload(obj); //上传成功回调事件,变更按钮的背景 $(".upload-image", obj).data("upload-success", function (data) { $(this).css("background-image", "url('" + Fast.api.cdnurl(data.url) + "')"); }) }); Controller.api.bindevent(); }, 1年前 赞 评论 评论(0) 暂无数据 取消回复 在此浏览器中保存我的显示名称、邮箱地址和网站地址,以便下次评论时使用。 个人技术分享 PHP 转到 Go Warning: Undefined array key 1 in /www/wwwroot/hankin.cn/wp-content/themes/hankin/inc/wx-excerpt.php on line 53 从 PHP 转到 Go 的朋友,常常会因为没有便捷的工具函数而感到苦恼。PHP 写的多了就会形成路径依赖,在写 Go 的时候时不时就会想到 PHP 强大的数组函数。当然写 Go 的 PHPer 也想拥有这么强大的工具函数,在这个开源的编程世界总有一些伟大的程序员做着贡献,正是有了他们的存在,因此便有了 lancet 这样一个强大的 Go 语言工具函数库,下面我介绍一些常用的工具函数「文末附上了手册地址」。 ContainChinese 验证字符串是否包含中文字符。 import ( "fmt" "github.com/duke-git/lancet/v2/validator" ) func main() { result1 := validator.ContainChinese("你好") result2 := validator.ContainChinese("你好hello") result3 := validator.ContainChinese("hello") fmt.Println(result1) fmt.Println(result2) fmt.Println(result3) // Output: // true // true // false } IsChineseMobile 验证字符串是否是中国手机号码。 import ( "fmt" "github.com/duke-git/lancet/v2/validator" ) func main() { result1 := validator.IsChineseMobile("13263527980") result2 := validator.IsChineseMobile("434324324") fmt.Println(result1) fmt.Println(result2) // Output: // true // false } IsChineseIdNum 验证字符串是否是中国身份证号码。 import ( "fmt" "github.com/duke-git/lancet/v2/validator" ) func main() { result1 := validator.IsChineseIdNum("210911192105130715") result2 := validator.IsChineseIdNum("123456") fmt.Println(result1) fmt.Println(result2) // Output: // true // false } IsChinesePhone 验证字符串是否是中国电话座机号码。 import ( "fmt" "github.com/duke-git/lancet/v2/validator" ) func main() { result1 := validator.IsChinesePhone("010-32116675") result2 := validator.IsChinesePhone("123-87562") fmt.Println(result1) fmt.Println(result2) // Output: // true // false } IsCreditCard 验证字符串是否是信用卡号码。 import ( "fmt" "github.com/duke-git/lancet/v2/validator" ) func main() { result1 := validator.IsCreditCard("4111111111111111") result2 := validator.IsCreditCard("123456") fmt.Println(result1) fmt.Println(result2) // Output: // true // false } IsEmail 验证字符串是否是有效电子邮件地址。 import ( "fmt" "github.com/duke-git/lancet/v2/validator" ) func main() { result1 := validator.IsEmail("abc@xyz.com") result2 := validator.IsEmail("a.b@@com") fmt.Println(result1) fmt.Println(result2) // Output: // true // false } Contain 判断 slice 是否包含 value。 import ( "fmt" "github.com/duke-git/lancet/v2/slice" ) func main() { result1 := slice.Contain([]string{"a", "b", "c"}, "a") result2 := slice.Contain([]int{1, 2, 3}, 4) fmt.Println(result1) fmt.Println(result2) // Output: // true // false } Chunk 按照 size 参数均分 slice。 import ( "fmt" "github.com/duke-git/lancet/v2/slice" ) func main() { arr := []string{"a", "b", "c", "d", "e"} result1 := slice.Chunk(arr, 1) result2 := slice.Chunk(arr, 2) fmt.Println(result1) fmt.Println(result2) // Output: // [[a] [b] [c] [d] [e]] // [[a b] [c d] [e]] } Equal 检查两个切片是否相等,相等条件:切片长度相同,元素顺序和值都相同。 import ( "fmt" "github.com/duke-git/lancet/v2/slice" ) func main() { s1 := []int{1, 2, 3} s2 := []int{1, 2, 3} s3 := []int{1, 3, 2} result1 := slice.Equal(s1, s2) result2 := slice.Equal(s1, s3) fmt.Println(result1) fmt.Println(result2) // Output: // true // false } Comma 用逗号每隔3位分割数字/字符串,支持前缀添加符号。参数 value 必须是数字或者可以转为数字的字符串, 否则返回空字符串。 package main import ( "fmt" "github.com/duke-git/lancet/v2/formatter" ) func main() { result1 := formatter.Comma("123", "") result2 := formatter.Comma("12345", "$") result3 := formatter.Comma(1234567, "¥") fmt.Println(result1) fmt.Println(result2) fmt.Println(result3) // Output: // 123 // $12,345 // ¥1,234,567 } ForEach 对 map 中的每对 key和 value 执行 iteratee 函数。 package main import ( "fmt" "github.com/duke-git/lancet/v2/maputil" ) func main() { m := map[string]int{ "a": 1, "b": 2, "c": 3, "d": 4, } var sum int maputil.ForEach(m, func(_ string, value int) { sum += value }) fmt.Println(sum) // Output: // 10 } Keys 返回 map 中所有 key 的切片。 package main import ( "fmt" "github.com/duke-git/lancet/v2/maputil" ) func main() { m := map[int]string{ 1: "a", 2: "a", 3: "b", 4: "c", 5: "d", } keys := maputil.Keys(m) sort.Ints(keys) fmt.Println(keys) // Output: // [1 2 3 4 5] } Merge 合并多个 maps 相同的 key 会被后来的 key 覆盖。 package main import ( "fmt" "github.com/duke-git/lancet/v2/maputil" ) func main() { m1 := map[int]string{ 1: "a", 2: "b", } m2 := map[int]string{ 1: "1", 3: "2", } result := maputil.Merge(m1, m2) fmt.Println(result) // Output: // map[1:c 2:b 3:d] } RandInt 生成随机int, 范围[min, max)。 package main import ( "fmt" "github.com/duke-git/lancet/v2/random" ) func main() { rInt := random.RandInt(1, 10) fmt.Println(rInt) } RandString 生成给定长度的随机字符串,只包含字母(a-zA-Z)。 package main import ( "fmt" "github.com/duke-git/lancet/v2/random" ) func main() { randStr := random.RandString(6) fmt.Println(randStr) //pGWsze } 以上这些只是部分的工具函数,如果想查看所有内容可以访问 https://www.golancet.cn/ 该网站。 再强大的函数工具库也不可能涵盖所有的场景,随着现在 AI 的盛行,AI 的编程辅助工具也应运而生。在这里我再分享一个免费的 PHP 代码直接转换 Go 代码工具,这个工具简直是 PHP 程序员的福音,直接将 PHP 代码贴上便自动生成了 Go 代码。 最后附上这个 AI 工具的地址 https://www.codeconvert.ai/php-to-golang-converter 赶快去使用吧。 1年前 赞 评论 评论(0) 暂无数据 取消回复 在此浏览器中保存我的显示名称、邮箱地址和网站地址,以便下次评论时使用。 个人技术分享 PHP使用无头浏览器如何帮助数据提取和抓取 php使用webdriver做采集的好处 自动化:WebDriver 可以模拟用户与浏览器的交互操作,如点击、输入文本、提交表单等。这使得您可以自动化执行各种网页操作,而无需手动进行。 多浏览器支持:WebDriver 支持多种浏览器,包括 Chrome、Firefox、Safari 等。这意味着您可以在不同的浏览器上运行和测试您的采集脚本,以确保在不同环境下的兼容性。 动态内容处理:许多网站使用 JavaScript 和 AJAX 技术来加载和更新内容。通过 WebDriver,您可以等待页面加载完成并获取完整的渲染后的页面内容,包括动态生成的内容。 数据抽取:WebDriver 提供了丰富的方法和选择器来定位和提取页面中的元素。您可以使用这些功能来获取所需数据,并将其保存到文件或数据库中进行进一步处理。 高度可定制化:WebDriver 允许您编写灵活且高度可定制化的采集脚本。您可以根据需要设置各种选项和参数,以适应不同网站和场景。 跨平台支持:WebDriver 是一个跨平台的工具,可以在 Windows、Mac 和 Linux 等操作系统上运行。这使得它成为一个广泛适用的采集解决方案。 使用方法 使用 WebDriver,您可以等待页面加载完成并获取完整的渲染后的页面内容,包括动态生成的内容。这意味着您可以采集到前后端分离网站上通过 JavaScript 或 AJAX 加载的数据。接下来让我自己动手写一个试试看。 安装浏览器chrome 1. 下载 Chrome 浏览器的安装包: wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm 2. 安装 Chrome 浏览器: sudo yum localinstall google-chrome-stable_current_x86_64.rpm 3. 验证 Chrome 是否成功安装: google-chrome --version 4. 下载对应版本的 ChromeDriver,并解压到指定目录(例如 /usr/local/bin): https://googlechromelabs.github.io/chrome-for-testing/ (各个版本的下载地址) wget https://chromedriver.storage.googleapis.com/114.0.5735.90/chromedriver_linux64.zip unzip chromedriver_linux64.zip -d /usr/local/bin/ 5. 启动 ChromeDriver 服务: LANGUAGE=ZH-CN.UTF-8 /usr/local/bin/chromedriver --port=9515 6.成功运行后,您应该会看到类似以下输出: Starting ChromeDriver {version} on port 9515... Only local connections are allowed. Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe. ChromeDriver was started successfully. https://github.com/php-webdriver/php-webdriver PHP+WebDriver使用教程 https://github.com/php-webdriver/php-webdriver php代码执行 <?php require_once('vendor/autoload.php'); use Facebook\WebDriver\Remote\DesiredCapabilities; use Facebook\WebDriver\Remote\RemoteWebDriver; use Facebook\WebDriver\Chrome\ChromeOptions; $options = new ChromeOptions(); $options->addArguments(['--no-sandbox','--headless']); $capabilities = DesiredCapabilities::chrome(); $capabilities->setCapability(ChromeOptions::CAPABILITY, $options); $host = 'http://localhost:9555'; $driver = RemoteWebDriver::create($host, $capabilities); // 访问百度网站 $driver->get('https://www.baidu.com'); // 获取页面源代码 $pageSource = $driver->getPageSource(); echo $pageSource; // 关闭 WebDriver 会话 $driver->quit(); 1年前 赞 评论 评论(0) 暂无数据 取消回复 在此浏览器中保存我的显示名称、邮箱地址和网站地址,以便下次评论时使用。 加载更多 个人技术分享 刷新页面会随机【个人信息流样式】 wordpress 主题 hankin 新增登录注册、用户中心2年前 Mac 下 打开微信小程序目录2年前 PHP To Go 转型手记1年前 php操作cookie字符串,替换对应值1年前 Mac反编译微信小程序2年前 免费开源smarty_hankin v2.0重构版 wordpress版本:6.0+ PHP版本:7.0~8.0 gitee源码仓库地址:点击打开 github源码仓库地址:点击打开 最新源码地址:待更新 加QQ群入口:1018842166 最近评论 Warning: Trying to access array offset on value of type null in /www/wwwroot/hankin.cn/wp-content/themes/hankin/inc/widget/widget-comments.php on line 32 Warning: Trying to access array offset on value of type null in /www/wwwroot/hankin.cn/wp-content/themes/hankin/inc/widget/widget-comments.php on line 32 […] 平台主题名称介绍价格地址WPpix综合性最好的主题298DemoWPpink完成度高朋友圈499DemoWPhankin还在完善的主题noDemoTypicefox完成度高FreeDemoTypListen完成度高FreeDemoTypNabo小鸟风格FreeDemoTypzyyo三栏自适应现代时尚FreeDemoTypFlip仿pix主题noDemoTyppengyou单栏主题noDemoTypfriends单栏主题noDemoTyplan tyLAN程序TY版本39DemoHalopixpix授权移植主题169DemoZblogpyq单栏朋友圈noDemoZblogMoments轻社交朋友圈298DemoHugomoments单栏朋友圈noDemo程序lan程序有朋友圈外观99DemoDiscuz! 朋友圈式手机版Discuz!的纯手机版朋友圈98Demo […] 抠脚大汉的摆烂人生 发布于1年前 Warning: Trying to access array offset on value of type null in /www/wwwroot/hankin.cn/wp-content/themes/hankin/inc/widget/widget-comments.php on line 32 Warning: Trying to access array offset on value of type null in /www/wwwroot/hankin.cn/wp-content/themes/hankin/inc/widget/widget-comments.php on line 32 […] Demo […] YanZi-朋友圈 发布于1年前 请问一下,同款主题在哪里授权、下载? 发布于1年前 真不错👍 唤( . )醒 发布于2年前 确实挺不错的 断舍离 发布于2年前 扫码加QQ群:1018842166微信打赏支付宝打赏 友情链接: coder gzh DIYgod kam mango pix主题 wordpress 大学 wp2 主题喵 主题猫 元气秋刀鱼 创造狮 吾柯 大海看看 守望轩-宁静雅致的小轩馆 腾讯设计导航 若志奕鑫 风信子博客 更多链接 hankin Powered by WordPress 浙ICP备20002401号-1 首页 发现 发布 消息 我
网站标题
个人技术分享
关键词
hankin、hankin官网、hankin主题、免费主题、博客,个人博客,博客模板,网站模板个人网站,个人博客模板,个人博客网站,个人网站模板,原创网站模板,原创博客模板,个人原创模板,免费网站模板,个人网站免费模板,个人博客模板免费下载,网站模板免费下载
站点描述
一款wordpress主题 hankin主题