小编dun*_*unc的帖子

编写复杂内容过滤器的最有效方法是什么?

不久前,我问了一个关于我网站内容过滤器的相当冗长的问题.这个帖子可以在这里找到,请随意阅读.

我已经接受了@ DampeS8N的答案,因为他回答得很好并且把我送到正确的方向.

不幸的是,所述问题的结果是我使用的内容过滤器效率太低,无法在我的应用程序环境中运行.

这是信息:

  • 我有~2000 +词汇表*和~1200 +物种简介**
  • 这些帖子的标题(词汇表条目)或科学名称(物种简介)构成了过滤器的搜索条件
  • I'd like to filter the contents of my species profiles (preferably upon save, but it could be done with a cron job) to search for the above search terms and replace them with links to the relevant glossary entries or species profiles

* A glossary entry can be found here.

An example list of glossary entries may be, caudal fin, dorsal, filter, etc.

** A …

php mysql wordpress

21
推荐指数
1
解决办法
735
查看次数

如何为某些帖子创建有效的内容过滤器?

我已经将这篇文章标记为WordPress,但我并不完全确定它是特定于WordPress的,所以我将它发布在StackOverflow而不是WPSE上.解决方案不一定是WordPress特定的,只需PHP.

情景
我运营的鱼网站上有许多热带鱼Species ProfilesGlossary参赛作品.

我们的网站围绕我们的个人资料.正如你所说,它们是网站的面包和黄油.

我希望实现的是,在提及另一个物种或词汇表条目的每个物种档案中,我都可以用链接替换这些词 - 比如你在这里看到的.理想情况下,我也希望这也出现在新闻,文章和博客文章中.

我们拥有近1400 species profiles1700 glossary entries.我们的物种概况通常很长,最后只统计我们的物种概况numbered more than 1.7 million words.

我目前正在尝试的
目前,我有一个filter.php功能 - 我相信 - 做我需要做的事情.代码非常冗长,可以在这里找到.

另外,在我的WordPress主题中functions.php,我有以下内容:

# ==============================================================================================
# [Filter]
#
# Every hour, using WP_Cron, `my_updated_posts` is checked. If there are new Post IDs in there,
# it will run a filter on all of the post's content. …
Run Code Online (Sandbox Code Playgroud)

php ajax wordpress cron

12
推荐指数
1
解决办法
1352
查看次数

从不同的表创建值的加权和

我正在尝试创建一个学生名单,这些学生的行为在我们每个学校的年度组中都是统计上最差的.

我们有一个名为的表students.

然后,我们有行为flagsalertssanctions.

但是,不同类别的旗帜/警报/制裁被认为比其他类别更严重.这些与标签一起存储在各自的_categories表中,例如flag_categoriessanction_categories.flag然后该表将有一个名为的列Category_ID(alerts有点不同,因为它只是一个Type带有'A','C','P'和'S'值的字段).

如果我想查看显示特定年份组中标记最高的学生的数据,我会运行此查询:

SELECT
  CONCAT(stu.Firstname, " ", stu.Surname) AS `Student`,
  COUNT(f.ID) AS `Flags`
FROM `students` stu
LEFT JOIN `flags` f ON f.Student_ID = stu.id
WHERE stu.Year_Group = 9
GROUP BY stu.id
ORDER BY `Flags` DESC
LIMIT 0, 20
Run Code Online (Sandbox Code Playgroud)

如果我想向学生展示特定年份组中最危机警报,我会运行此查询:

SELECT
  CONCAT(stu.Firstname, " ", stu.Surname) AS `Student`,
  COUNT(f.ID) AS `Flags`
FROM `students` stu
LEFT JOIN `flags` f …
Run Code Online (Sandbox Code Playgroud)

mysql

9
推荐指数
1
解决办法
213
查看次数

优化数据库结构

我正在为我们的VLE开发奖励系统,它使用三种独立的技术 - 用于大多数客户端/显示处理的JavaScript,用于与数据库通信的PHP和用于数据库本身的MySQL.

我附上了三张"交易"表的截图.它的结构,一些示例记录和其细节的概述.

前提是工作人员奖励学生表现良好的行为等.这可能意味着30名学生的课程一次获得积分.工作人员每周限制300点,目前有大约85名员工正在访问该系统(这可能会上升).

我现在这样做的方式,每个"交易"都有一个"Giver_ID"(工作人员授予点的成员),一个"Recipient_ID"(接收积分的学生),一个类别和一个理由.这样,每当一名员工发出30分时,我就会在数据库中放入30行.

这似乎在早期工作,但在三周内我已经在数据库中有超过12,000个事务.

此时它变得有点复杂.在"指定点"页面(附带的另一个屏幕截图)上,当教师点击其中一个班级或搜索单个学生时,我希望显示学生的积分.我目前在我的系统上执行此操作的唯一方法是执行" SELECT * FROM 'transactions'"并使用以下JS将所有信息放入数组中:

var Points = { "Recipient_ID" : "0", "Points" : "0" };

function getPoints (data) {
    for (var i = 0; i < data.length; i++) {
        if (Points[data[i].Recipient_ID]) {
            Points[data[i].Recipient_ID] = parseInt(Points[data[i].Recipient_ID]) + parseInt(data[i].Points);
        } else {
            Points[data[i].Recipient_ID] = data[i].Points;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在内部登录系统时,这似乎足够快.但是,在外部登录时,此过程大约需要20秒,因此在您单击/搜索几次之前,不会显示学生的分数值.

我在PHP中使用以下代码来访问这些事务:

function getTotalPoints() {
    $sql = "SELECT * 
        FROM `transactions`";

    $res = mysql_query($sql);
    $rows = array(); 
    while($r = mysql_fetch_assoc($res)) {
        $rows[] = $r;
    } …
Run Code Online (Sandbox Code Playgroud)

javascript php mysql

8
推荐指数
1
解决办法
154
查看次数

在PHP中编写MySQL数据库查找/替换脚本

我目前正在将我的定制网站重新开发为WordPress驱动的CMS.

我一直在研究的网站只是我现有的网址加/dev/,即http://my.website.com/dev/.

我将http://my.website.com在周末移动这个网站,因此需要删除对/dev/URL的所有引用.

我想要做的基本上是/dev在我的数据库上"查找和替换" .我可以清楚地看到哪些表在此值,但自然按照一个WordPress安装,相当多的字段是序列化数据-这一个简单dump> open with notepad++> find & replace将打破.

我为此目的开发的代码在这里:

<?php

$look_at[] = array( "table" => "wp_options", "fields" => array( "option_value" ), "id_field" => "option_id" );
$look_at[] = array( "table" => "wp_postmeta", "fields" => array( "meta_value" ), "id_field" => "meta_id" );
$look_at[] = array( "table" => "wp_posts", "fields" => array( "post_content", "guid" ), "id_field" => "ID" );
$look_at[] = array( "table" => "wp_sfmeta", "fields" …
Run Code Online (Sandbox Code Playgroud)

php mysql migration wordpress

7
推荐指数
1
解决办法
2595
查看次数

plupload运行时在尝试访问upload.php时返回403 FORBIDDEN错误

介绍

我想在一个潜在的复杂环境中实现相对简单的事情.我想使用plupload jQuery UI插件将文件从JavaScript小部件(Netvibes UWA格式)上传到本地Intranet服务器.

问题

我似乎正确地设置了我的代码 - plupload容器出现了,我可以愉快地选择和上传文件.上传似乎工作 - 每个文件达到100% - 但当我检查我的Firebug控制台时,我收到以下错误:

OPTIONS upload.php - 403 Forbidden

并且文件不会上传到我指定的files目录.

Firebug Net输出

环境

  • 源服务器frogserver.curriculum.local位于内部IP 192.168.3.15上
  • 收件人服务器staff.curriculum.local位于内部IP 192.168.3.60上
  • 原始服务器是Linux,但我必须HTML/JS/PHP/SQL不能直接访问,一切都必须通过上述Netvibes的通用的Widget API来完成.它是由www.frogtrade.com提供的封闭式虚拟学习环境解决方案
  • 收件人服务器是Windows/IIS

JavaScript的

widget.onLoad = function(){
    $( "#datetime" ).datepicker({ dateFormat: "yy-mm-dd" });
    Input.init();

    /* plupload */
    $("#uploader").plupload({
        // General settings
        runtimes : 'html5,flash,html4',
        url : 'http://staff.curriculum.local/frog/LOTS/upload.php',
        max_file_size : '1000mb',
        max_file_count: 20, // user can add no more then 20 files at …
Run Code Online (Sandbox Code Playgroud)

javascript php iis jquery plupload

7
推荐指数
1
解决办法
1721
查看次数

处理请求池的异常

我正在使用 Guzzle 向 API 端点发送大量请求,并使用该Pool功能异步和并发地发送这些请求。

该脚本如下所示:

use GuzzleHttp\Client;
use GuzzleHttp\Promise;
use GuzzleHttp\Pool;
use GuzzleHttp\Psr7\Request;
use GuzzleHttp\Exception\RequestException;

/* Configure logger */
Logger::configure("config/logger.xml");
$logger = Logger::getLogger("console");

/* Configure Guzzle Client */
$client = new Client([
    'base_uri' => 'http://my.api/',
    'timeout' => 2.0,
    'allow_redirects' => false,
]);

/* Anonymous function (closure) to 'yield' X number of Requests */
$requests = function ($num_requests) {
    for ($i = 0; $i < $num_requests; $i++) {
        yield new Request('GET', "/MY_UNIQUE_IDENTIFIER/");
    }
};

/* Create a Pool …
Run Code Online (Sandbox Code Playgroud)

php guzzle

6
推荐指数
1
解决办法
621
查看次数

面向对象的JavaScript:你会怎么做?

因为我已经更好地了解了JS,我已经从程序风格转变为半OO(不要问我的意思是什么:基本上是混乱!)但是现在我想开始正确地使用它.OO吸引了我的编码大脑.

但是,我正在努力开发一个学校周的图书馆,我不确定我最好怎么做.

如果我只是使用几周的数组,它们看起来像这样:

    WeeksArray[36].StartDate = "2011-09-05";
    WeeksArray[36].EndDateSchool = "2011-09-09";
    WeeksArray[36].EndDateProper = "2011-09-11";
    WeeksArray[36].JSDate = new Date ( 2011, 8, 05 );
    WeeksArray[36].Type = "1";
    WeeksArray[36].Label = "Week 36: 5th Sept 2011";
Run Code Online (Sandbox Code Playgroud)
  • 关键:根据学校日历的周数
  • StartDate/EndDate:与MySQL兼容的日期范围
  • JSDate:JS开始日期的日期对象
  • 类型:学校时间表,第1周或第2周
  • 标签:表示星期开始的人类可读标签

我希望其他脚本可以访问此库,以便他们可以加载包含学校日历中所有周的数组或对象.我想,例如,我的一个脚本会根据这些信息生成一个下拉菜单,显示"第36周:2011年9月5日",点击后会向我的PHP脚本和SQL数据库发送请求,然后过滤信息在屏幕上相应.注意:我不需要帮助实现后者,它只是上下文的一个例子.

我开始编码如下:

var LEAP = {}

LEAP.Schedule = {

    init: function() {
        this.setWeeks();
    }

    setWeeks: function() {
        var WeeksArray = [];
Run Code Online (Sandbox Code Playgroud)

但是我看得越多,感觉就越不正确!

我应该创建"Week"对象,然后是一个容器,它有一个返回所有Week对象的方法吗?我一直在阅读John Resig的"Pro JavaScript Techniques"中的OOP章节,但事实是我不完全理解它.这感觉就像是正确的方法,但是对象中的对象正在伤害我的头脑.

最后的结果应该是我在我的一个页面上包含这个脚本,然后可以使用类似的东西var WeeksArray = LEAP.Schedule.getWeeks();,但即使这样我也不确定这是否真实?

我很困惑......!:D对此主题的任何帮助将非常感激.

javascript oop

5
推荐指数
1
解决办法
271
查看次数

返回页面中所有 iframe 的 ID

由于我使用的小部件格式,我有一个页面,其中嵌入了多个 iframe。我不会粘贴代码,因为它庞大而笨拙,但它本质上就是这样:

<html>
    <head></head>
    <body>
        <iframe>
            <html>
                <head></head>
                <body>
                    <iframe>
                        <html>
                            <head></head>
                            <body>
                                <iframe>
                                    <html>
                                        <head></head>
                                        <body>
                                        blah
                                        </body>
                                    </html>
                                </iframe>
                            </body>
                        </html>
                    </iframe>
                </body>
            </html>
        </iframe>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

但是,根据我使用的页面和模板,可能会有更多或更少的 iframe。

因此,我试图从最嵌入的 iframe 中获取此页面中所有 iframe 的 ID。

这可以用 jQuery 实现吗?我已经尝试了一些代码片段,但没有运气:

$('iframe', window.parent.document).each(function() {
    console.log($(this).attr("id"));
});

$('iframe', parent.document).each(function() {
    console.log($(this).attr("id"));
});

$('iframe').each(function() {
    console.log($(this).attr("id"));
});
Run Code Online (Sandbox Code Playgroud)

这些的输出是一个单一的 ID 字符串 - 不幸的是,它不是我想要控制的 iframe。

提前致谢,

javascript iframe jquery

5
推荐指数
1
解决办法
4674
查看次数

脚本工作取决于IE文档模式

我正在尝试用JavaScript编写一个小部件(使用UWA语法).它在FireFox中运行得非常好,但Internet Explorer却很奇怪.

基本上,当我第一次加载小部件时,它不会显示我的中心列(它应显示当天的Duty Rota).

默认

但是,如果我按F12并进入开发者控制台,我可以将文档模式更改为IE9 standards并使其正常工作.

IE9标准模式

如果我然后将文档模式设置为Quirks,它显示如下:

怪癖模式

定义中心列的代码如下:

/* [centre] Duty rota */
AllInOne.centreCol = function() {
    var now = new Date();
    var currentDay = now.getDay();

    var DRWeek1 = {
        Monday : {
            BeforeSchool : "HA, MJO, LS, GB, JSA, HA, TD",
            Breaks : "ABO, LL, RR, DR, PHd, JA, VID, AN, LDE, CN, DW, PG, MD, ND, CK, JP, RH, RJ, CC, GB",
            AfterSchool : "GB, CL, MVW, TD/GDO, HL, LS" …
Run Code Online (Sandbox Code Playgroud)

javascript internet-explorer cross-browser

4
推荐指数
1
解决办法
1682
查看次数