小编For*_*est的帖子

如何从需要cookie登录的网站上抓取PHP中的网站内容?

我的问题是它不仅需要一个基本的cookie,而是要求一个会话cookie,以及随机生成的ID.我想这意味着我需要使用带有cookie jar的Web浏览器模拟器?

我曾尝试使用Snoopy,Goutte和其他几个Web浏览器模拟器,但到目前为止我还没有找到有关如何接收cookie的教程.我有点绝望了!

谁能给我一个如何在史努比或Goutte中接受cookie的例子?

提前致谢!

php cookies snoopy scraper goutte

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

编写表达式以在括号之间递归提取数据

我正在尝试编写一个正则表达式,将字符串拆分为匹配花括号内的单独元素.首先,它需要递归,其次,它必须返回偏移量(如同PREG_OFFSET_CAPTURE).

我实际上认为这可能是处理这些数据的一种效率较低的方法,但我不确定更简单,性能更强的技术.(如果你有一个,我很乐意听到它!)

因此,输入可以采用以下格式:

Hello {#name}! I'm a {%string|sentence|bit of {#random} text}
Run Code Online (Sandbox Code Playgroud)

如果采用以下格式,则处理数据非常简单:

Hello {#name}! I'm a {%string|sentence|bit of random text}
Run Code Online (Sandbox Code Playgroud)

但它是另一组花括号中的递归花括号,这是处理时的问题.我正在使用以下代码来拆分字符串:

preg_match_all("/(?<={)[^}]*(?=})/m", $string, $braces, PREG_OFFSET_CAPTURE);
Run Code Online (Sandbox Code Playgroud)

如前所述,这对于简单的形式来说非常好.对于更复杂的形式,更不用说了.这个的意图(我让它以非递归形式运行)是用函数处理的内容替换每个带括号的区域,向上工作.

理想情况下,我希望能够编写Hello {#name}! I'm a {%string|sentence|bit of {?(random == "strange") ? {#random} : "strange"}} text}并使其易于管理.

任何帮助将非常感谢.

php regex recursion tokenize

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

从数组中构建越来越长的字符串

我正在编写一个PHP函数,它将采用以下格式的数组:

array(
    'one',
    'two',
    'three'
)
Run Code Online (Sandbox Code Playgroud)

并回显以下字符串:

one
one-two
one-two-three
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何做到这一点.我已经尝试使用变量存储前一个变量然后使用它,但它只适用于一个:

$previous = null;
for($i = 0; $i < count($list); $i++) {
    echo ($previous != null ? $route[$previous] . "-" : '') . $route[$i];
    $previous = $i;
}
Run Code Online (Sandbox Code Playgroud)

输出:

one
two
two-three
Run Code Online (Sandbox Code Playgroud)

无论如何,这种方法可能效率低下,因为这个脚本在技术上应该能够处理任何长度的数组.

有人可以帮忙吗?

php arrays string

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

在一个查询中的每一行中增加唯一列

我正在尝试更新包含两列的表;idpositionid是唯一的并且自动递增。position是唯一的,但不会自动递增,实际上必须手动设置。

我需要更改位置大于或等于5(或我提供的任何其他数字)的所有行,以将它们全部加一。这是我的代码:

UPDATE slides 
SET   position = position + 1 
WHERE position >= 5;
Run Code Online (Sandbox Code Playgroud)

不幸的是,它返回以下错误:

错误:键“slides_position_unique”的条目“2”重复

如何更新所有这些唯一编号而不引起冲突?我尝试过一个子查询来查找所有可更新的行并反向返回它们,但它没有帮助。


CREATE TABLE slides
  (id int(10) unsigned NOT NULL AUTO_INCREMENT,
   user_id int(10) unsigned NOT NULL,
   position int(10) unsigned NOT NULL,
   PRIMARY KEY (id),
   UNIQUE KEY slides_position_unique (position),
   KEY slides_user_id_foreign (user_id),
   CONSTRAINT slides_user_id_foreign
     FOREIGN KEY (user_id) REFERENCES users (id) )
Run Code Online (Sandbox Code Playgroud)

mysql sql select auto-increment sql-update

0
推荐指数
1
解决办法
1795
查看次数