小编Maa*_*per的帖子

PHP regex,preg_replace_callback,在1个字符串中失败,有2个可能的匹配

我正在玩这个非常基础的课程,以了解有关正则表达式的更多信息.我想要实现的是从testview文件中获取内容,在{{EACH slides}}和{{#EACH}}之间准确抓取字符串.现在在类中出现的正则表达式就是这样,加上开始标记中的变量名.然后我想使用该字符串用正确的变量循环它并将其放回原位.

但是当我在视图中使用2个EACH循环而不是1时,它会严重失败.preg_replace_callback()将匹配第一个开始标记和第二个循环的最后一个结束标记,并给出如下字符串:

"htmlbalalbal {{#EACH}} more htmlblabla {{EACH newsitems}} htmlblalblabla"
Run Code Online (Sandbox Code Playgroud)

从:

<div class="rows-container">
{{each slides}}
    <div class="row flex-wrap" data-id="{{id}}">
    </div>
{{#each}}
</div>
<div class="rows-container">
{{each blogposts}}
    <div class="row flex-wrap" data-id="{{id}}">
    </div>
{{#each}}
Run Code Online (Sandbox Code Playgroud)

我一直在尝试改变正则表达式一段时间了,我开始看到越来越多的逻辑......但我还没有解决我的问题.是否有可能走这条路?或者我是否需要另一种解决方案来扫描我的测试文件中的多个EACH循环?我可能很快会使用一些框架,但是当我在周末感到无聊时,我喜欢这样做...

class Aclass{

    private $each = '~\{\{each ([^{]*)\}\}([^*]*)\{\{\#each\}\}~i';

    private $current_file_content = "";
    private $testviews = ['/testview.php'];

    private $views;

    function __construct($views){
        $this->views = $views; //not in use
        $this->start();
   }

   private function start(){
        foreach($this->testviews as $file){
            $this->current_file_content = file_get_contents(ROOT.$file);
            $this->scan_each();
        }
   }

   private function scan_each(){
       $result = preg_replace_callback($this->each, [$this, '_each'], …
Run Code Online (Sandbox Code Playgroud)

php regex preg-replace

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

Laravel 查询构建器与 Raw

我对 laravel 还很陌生,到目前为止,我真的很喜欢 eloquent 和 querybuilder,但是一旦查询变得更加复杂,我的头就开始受伤了……我在很长一段时间后刚刚完成了 2 个工作示例,也许你们可以提供帮助我优化一下。我先举个例子,然后说(缺点)优点

所以首先是 DB::select... 老实说,我认为它比第二个示例更具可读性。

    $shared_slugs   = Magic::in_query($this->shared_slugs);

    $items = DB::select("
        SELECT * FROM f_admin_items
        WHERE
            active = 1
        AND (
            slug IN $shared_slugs
            OR
            :treshhold <= :urank AND id IN (SELECT admin_item_id FROM f_user_access WHERE user_id = :uid)
            OR
            :treshhold > :urank AND `rank` >= :urank
        )
        ORDER BY `order` ASC
    ", [
        'treshhold' => $this->threshold_rank,
        'urank' => $user_rank,
        'uid'    => $user_id
    ]);
Run Code Online (Sandbox Code Playgroud)

总体而言,使用命名参数绑定非常有效。基本上菜单项必须始终处于活动状态,加上 (1 OR 2 OR 3 )。例如,仪表板被接受为共享 slug。否则会有一些排名检查。

现在我一直在努力使用 eloquent …

query-builder laravel laravel-5.3

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

Scss, nth-child &amp; :not() 选择器

我对 scss 有点陌生,我的行容器中的行有这种基本样式。

.rows-container{
    border-bottom:2px ridge grey;
}
.row{
    height:30px;width:100%;

    &:hover div{
        background-color:lightgrey;
        }
    &:nth-child(odd){
        background: white;
        }
    &:nth-child(even){
        background: #e0e0e0;
        }
}
Run Code Online (Sandbox Code Playgroud)

使用以下 html 非常直接:我遗漏了一些不重要的 html。

<div class="rows-container">
    <div class="row></div> //white
    <div class="row></div> //grey
    <div class="row></div> //white
    <div class="row></div> //grey etc...
</div>
Run Code Online (Sandbox Code Playgroud)

但现在我添加了子行

<div class="rows-container">
    {{each rows}}
        <div class="row"></div>           //parent row

        {{each childs}}
        <div class="subitem"></div>   //several rows from the same table which have a parent_id connected to the current row.
        {{#each}}

    {{#each}}
</div>
Run Code Online (Sandbox Code Playgroud)

我打算在点击时切换子项目。但是当没有子项可见时(子项有自己的颜色),'.rows' 奇数/偶数就搞砸了。现在我认为这是因为 nth-child 奇数/偶数是在容器中的所有行/子项上计算的,而不仅仅是 .row(s)。有没有办法对 .rows …

css sass

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

Laravel Eloquent 不同时间戳的年份

在某些索引上,我有过滤结果的选择框,其中 1 个按年份过滤。但此选择框只需要相关表中存在的年份。在网上做了一些研究后,我想出了这个:

public function getAvailableYears(string $column)
{
    $years = $this->model->selectRaw("substr({$column},1,4) as year")
                         ->distinct('year')
                         ->pluck('year', 'year')
                         ->toArray();

    return ['' => 'All'] + $years;
}
Run Code Online (Sandbox Code Playgroud)

这完美地生成了一个准备插入到 Form::select() 中的数组

我想知道是否有更好的方法来做到这一点。它似乎工作正常,因为时间戳总是以年份开始,但我不确定性能或将来可能遇到的其他问题。任何专家的见解都会很棒。

mysql eloquent laravel-5

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