小编Rap*_*ger的帖子

在PHP中拆分字符串并获取最后一部分

我需要在PHP中用" - "拆分字符串并获取最后一部分.

所以从这个:

ABC-123-XYZ-789

我希望得到

"789"

这是我提出的代码:

substr(strrchr($urlId, '-'), 1)
Run Code Online (Sandbox Code Playgroud)

哪个工作正常,除了:

如果我的输入字符串不包含任何" - ",我必须得到整个字符串,如:

123

我需要回来

123

它需要尽可能快.任何帮助表示赞赏!

php string

38
推荐指数
5
解决办法
10万
查看次数

使用SVG作为og:image

是否可以将SVG用于Open Graph图像?

我尝试了它并没有与Facebook一起工作,但是我不确定它是否是我的SVG的问题或者通常是不可能的.

我是这样做的:

<meta content="http://www.example.com/mylogo.svg" property="og:image">
Run Code Online (Sandbox Code Playgroud)

sharing social-networking opengraph facebook-opengraph

37
推荐指数
2
解决办法
1万
查看次数

检测触摸设备上的左/右滑动,但允许向上/向下滚动

我需要检测并对左/右滑动作出反应,但是想让用户能够滚动相同的元素,所以只要他左右移动他的手指,最大上/下移动X像素,它不应该滚动,但是当它超过X时,它应该滚动.

所以我做的是:

var startX, startY, $this = $(this);
function touchmove(event) {
        var touches = event.originalEvent.touches;
        if (touches && touches.length) {
            var deltaX = touches[0].pageX - startX;
            var deltaY = touches[0].pageY - startY;
            if (Math.abs(deltaY) > 50) {
                $this.html('X: ' + deltaX + '<br> Y: ' + deltaY + '<br>TRUE');
                $this.unbind('touchmove', touchmove);
                return true;
            } else {
                $this.html('X: ' + deltaX + '<br> Y: ' + deltaY);
                event.preventDefault();
            }
        }
    }

    function touchstart(event) {
        var touches = event.originalEvent.touches;
        if (touches && …
Run Code Online (Sandbox Code Playgroud)

javascript jquery touch swipe

29
推荐指数
3
解决办法
4万
查看次数

where子句中的计算列 - 性能

因为你不能在MySQL的where子句中使用计算列,如下所示:

SELECT a,b,c,(a*b+c) AS d FROM table
WHERE d > n
ORDER by d
Run Code Online (Sandbox Code Playgroud)

你必须使用

SELECT a,b,c,(a*b+c) AS d FROM table
WHERE (a*b+c) > n
ORDER by d
Run Code Online (Sandbox Code Playgroud)

是计算(在那个例子中"(a*b + c)"每行执行一次还是两次?有没有办法让它更快?我觉得很奇怪,可以在列上进行ORDER而不是有一个WHERE-条款.

mysql performance

24
推荐指数
1
解决办法
2万
查看次数

跨域cookie - 一个可能是新想法

我的好友Carsten Lau提出了一个关于如何阅读跨域cookie的有趣想法.

情况:您想要从域"B"上设置的域"A"中读取cookie.想法:从域"A"上的客户端,您对域"B"上的动态资源执行get-request - fe图像或javascript,服务器"B"实际上是一种能够读取cookie的编程语言像PHP,Java等.通过该请求,您可以发送一个唯一的标识符,如会话ID.因此,查看域"A"上的站点的客户端上的代码可能如下所示:

<img src="www.domainB.com/?getCookie.php?sessionID=1234">
Run Code Online (Sandbox Code Playgroud)

现在是有趣的部分,服务器B在服务器端读取由域"B"设置的cookie,并将结果与​​提供的session-id一起写入域"A"可访问的DB中,或者返回包含cookie信息的响应域"A"上的客户端然后通过AJAX将其发送到服务器"A".

我很确定我们还没有发现一个漏洞.我个人认为服务器"B"将无法读取cookie信息,因为客户端浏览器URL指向域"A",但当然上面解释的"getCookie" - 请求指向"B".

请告诉我们您对它的看法,工作原理或无法工作的原因.令我惊讶的是,一个小小的概念证明是成功的.

javascript cookies cross-domain

18
推荐指数
1
解决办法
3万
查看次数

重新安排/分配DIV而无需重新插入DOM

我有几个DIV,其内容具有data-weight属性,该属性通过AJAX定期更新.

我在循环中对它们进行排序,迭代来自ajax-request的新值.

由于数据权重可以随时更新为任何值,因此订单可以从更新更改为更新.

我的排序逻辑似乎有缺陷(至少可以说是))因为它只将每个元素与下一个元素进行比较,.next()所以你必须单击"按数据权重排序"最大值.4个元素的4次,直到它们被排序(见下面的小提琴)

重要的是要知道要排序的DIV包含外部资源,如图像,视频等,因此重要的是它们被移动而不是重新创建,因为我认为当重新插入DOM时,包含的资源会被重新加载这对我的用例来说是不可接受的.

由于很难描述和理解,这是我的小提琴:

http://jsfiddle.net/PdGTK/5/

更新

虽然主要问题已经解决,但仍然存在这样的问题:当包括fe Youtube-Videos时,每次重新排序DIV时都会重新加载它们,即使视频在DOM中没有改变位置也是如此.a)看起来很奇怪,b)中断视频播放.阅读有关该主题的更多信息,在DOM中移动iframe似乎总是让他们重新加载他们的内容 - 这有多愚蠢?

对于YT视频,小提琴更新为固定数据权重为1,因此它始终保持在最顶层.

http://jsfiddle.net/PdGTK/10/

想法非常欢迎!!

sorting jquery dom

17
推荐指数
2
解决办法
8812
查看次数

使用srcset的Pagespeed惩罚

将视网膜和非视网膜显示到相应的设备,如下所示:

<picture>
   <source srcset="non-retina.jpg, retina.jpg 2x">
   <img src="non-retina.jpg">
</picture>
Run Code Online (Sandbox Code Playgroud)

作品.但Google Pagespeed Insight告诉它在加载CSS之前无法呈现这一点,我们会受到惩罚.但是,仅在移动视图中 - 这是Pagespeed Insights无论如何渲染Retina图像的唯一情况.

我们完整的CSS文件位于页脚中,因为我们在头部有一个重要的,重要的CSS内联.

但是,此代码无需任何来自Pagespeed Insights的投诉

<picture>
  <img src="non-retina.jpg">
</picture>
Run Code Online (Sandbox Code Playgroud)

我们缺少什么?在知道要采用哪个source/srcset-image之前,浏览器是否有必要阅读样式规则?

测试用例:

下面是它的测试页:http://pagespeed-srcset-nopicturefill.slople.com/ ...这是它的结果:https://developers.google.com/speed/pagespeed/insights/?url=http% 3A%2F%2Fpagespeed-srcset-nopicturefill.slople.com%2F&标签=移动

css3 pagespeed google-pagespeed srcset

17
推荐指数
1
解决办法
1621
查看次数

iOS webapp中BODY上的原生动态滚动

根据这篇文章http://johanbrook.com/browsers/native-momentum-scrolling-ios-5/,应该能够像这样启用类似本机的动量滚动:

body{
        -webkit-overflow-scrolling: touch;
    }
Run Code Online (Sandbox Code Playgroud)

但是,这不会改变我的webapp中的任何内容.它有或没有该属性滚动相同.我希望像本机应用程序一样有更长的动力.

我在一个可滚动的DIV上测试它,它可以工作 - 但我不想为此添加任何不必要的标记.

有小费吗?

更多信息

好吧,它"有点"的工作原理如下:

html, body {
    height:100%;
    overflow: scroll;
    -webkit-overflow-scrolling: touch;
    position:relative;
}
Run Code Online (Sandbox Code Playgroud)

然而,任何位置:固定在BODY标签内的东西在滚动时移动,并在滚动停止时重新连接到它的正确位置.有什么我可以做的来解决这个问题吗?

有人对此有任何意见吗?

小提琴:http: //jsfiddle.net/nMxEg/1/

web-applications css3 ios

15
推荐指数
1
解决办法
5979
查看次数

使用PHP中的AJAX请求保存base64编码的图像

我将画布图像编码为base64,这给了我:

data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAICAgICAQICAgICAgIDAwYEAwMDAwcFBQQGCAcICAgHCAgJCg0LCQkMCggICw8LDA0ODg4OCQsQEQ8OEQ0ODg7/2wBDAQICAgMDAwYEBAYOCQgJDg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg7/wAARCAAKAAoDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD5a/Z7/Zw8EfF/9mT4h6Z4u0GTwt8WNP1iSya7vZp0uNKYJBsItyANjt5o2uGkDBsHhMfDsOn2zWcTQ39tJCUBR5HVGYY4JUEgH2BIHrXunw71vWdI/aa+POraTq+p6Xqr+H/Edy15aXTxTNMt4m2QupDbxubDZyMn1r4yRE8pflXoO1fleQYDEzzHGxnXbjeEop6qPNFtpXb00Wm3zP1vNM2pUMLh5RpK75k3fV8rVm7LzP/Z
Run Code Online (Sandbox Code Playgroud)

这似乎是一个有效的base64图像(用在线解码器解码).

我用其他(form-)变量和jquery ajax一起发送它,如下所示:

$.ajax({
    type: "POST",
    url: "index.php?action=saveNewPost",
    data: {text: text, img: encodeURIComponent(base64img)},
    contentType: "application/x-www-form-urlencoded;charset=UTF-8",
    success: function(){
        //...
    }
});
Run Code Online (Sandbox Code Playgroud)

在服务器上,这是这一行:

saveImage(utf8_decode($_POST['img']));
Run Code Online (Sandbox Code Playgroud)

哪个叫:

function saveImage($base64img){
    define('UPLOAD_DIR', '../uploads/');
    $base64img = str_replace('data:image/jpeg;base64,', '', $base64img);
    $data = base64_decode($base64img);
    $file = UPLOAD_DIR . uniqid() . '.jpg';
    file_put_contents($file, $data);
}
Run Code Online (Sandbox Code Playgroud)

但是,文件未保存.可能有什么不对?

php jquery base64

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

带连接表的PDO FETCH_CLASS

假设我有2个php对象:

<?php
class Post {
    public $id;
    public $text;
    public $user_id;
}
?>
Run Code Online (Sandbox Code Playgroud)

<?php
class User {
    public $id
    public $name
}
?>
Run Code Online (Sandbox Code Playgroud)

每个帖子都有一个唯一约束,数据库中有1个用户.

我想用PDO"FETCH_CLASS"方法将数据填充到"Post"对象中,该方法适用于所有"Post"属性但是如何填充"User"中的属性?

我的SQL语句如下所示:

SELECT post.id, 
       post.text, 
       post.user_id, 
       user.id, 
       user.name 
FROM POST INNER JOIN User on post.user_id = user.id
Run Code Online (Sandbox Code Playgroud)

谢谢!

更新:

ATM我填写我的"Post"类,如下所示:

    $statement = $db -> prepare($query);
    $statement -> execute();
    $statement -> setFetchMode(PDO::FETCH_CLASS, 'Post');
    $posts = $statement -> fetchAll();
Run Code Online (Sandbox Code Playgroud)

那么我如何更改它以填充其他类"用户"?

解:

$statement = $db -> prepare($query);
$statement -> execute();
$posts = array();
while (($row = $statement->fetch(PDO::FETCH_ASSOC)) !== …
Run Code Online (Sandbox Code Playgroud)

php mysql pdo join

10
推荐指数
1
解决办法
1万
查看次数