1
raincious 2013-06-07 16:44:06 +08:00
if ($postTime < time() - 3600 * 24) {
$stype='可用色'; } else { $stype='灰色'; } |
2
raincious 2013-06-07 16:45:32 +08:00 2
@raincious 啊,错了,真的不能边聊天边写程序,抱歉:
if ($postTime > time() - 3600 * 24) { $style='可用色'; } else { $style='灰色'; } |
3
7sj525bL0Wy7FOx9 2013-06-07 21:24:52 +08:00
判断站内信创建时间啊,如果超过24小时就控制按钮显示了。
顺便求解一个问题,由于新注册无法发帖,问题比较急,所以搭车了。 有两个数组,$a和$b,$a是原始内容,$b是正则匹配规则,我需要匹配出$a里的每个键值对,然后用$b的键组成一个新数组,代码结果如下 $a = array(abc7,cbd4,def9) //待匹配内容 $b = array("r1" => "/abc\d/","b2" => "/cbd\d/, "f5" => "/def\d/") //匹配规则 最后匹配出的结果 $c = array("r1" => "abc","b2" => "cbd","f5" => "def") 求大神解答,语言是PHP |
4
7sj525bL0Wy7FOx9 2013-06-07 21:25:21 +08:00
@raincious 求大神帮忙解决下我这个问题,谢谢
|
5
Sunyanzi 2013-06-07 21:34:04 +08:00 1
<?php
$a = [ 'abc7', 'cbd4', 'def9' ]; $b = [ 'r1' => '/abc\d/', 'r2' => '/cbd\d/', 'r3' => '/def\d/' ]; $c = []; foreach( $a as $ia ) foreach( $b as $ik => $ib ) if ( preg_match( $ib, $ia, $ic ) ) $c[$ik] = $ic[0]; print_r( $c ); @LionXen 既然看到了就顺手写一下 ... 两次循环而已有什么难点么 ..? |
6
7sj525bL0Wy7FOx9 2013-06-07 21:46:24 +08:00
@Sunyanzi 已跪,我是兴趣学php,对循环一类的一直都比较恼火,谢谢您的解答,可以使用
|
7
raincious 2013-06-07 21:56:27 +08:00 1
@Sunyanzi
$b = [ 'r1' => '/abc\d/', 'r2' => '/cbd\d/', 'r3' => '/def\d/' ]; 我测试了@LionXen的正则表达式,发现不能匹配。修改成这样才能匹配: $b = array('r1' => '/abc/', 'b2' => '/cbd/', 'f5' => '/def/'); 测试代码: <?php $a = array('abc7', 'cbd4', 'def9'); $b = array('r1' => '/abc/', 'b2' => '/cbd/', 'f5' => '/def/'); $result = array(); // Store the result $iloop = 0; // Use to match corresponding element key in $a; $matches = array(); foreach($b AS $key => $preg) { if (preg_match($preg, $a[$iloop++], $matches)) { $result[$key] = $matches[0]; } } print_r($result); ?> |
9
7sj525bL0Wy7FOx9 2013-06-07 22:04:37 +08:00
@raincious 感谢,这个正则只是例子,非常感谢^_^
|
10
Sunyanzi 2013-06-07 22:11:20 +08:00 1
@raincious 你的这种写法 ... 怎么说呢 ... 我改变一下 $a 的顺序不就挂了 ...
以及 ... 正则没有任何问题 ..? <?php preg_match( '/abc\d/', 'abc2222', $foo ); echo $foo[0]; 上面这段程序你无法得到 abc2 这个结果么 ..? |
11
raincious 2013-06-07 22:20:35 +08:00 1
@Sunyanzi 那个只是测试代码。因为我在调试楼主的问题时发现没法匹配得到楼主的结果。
然后拿你的例子代码算了下,结果是Array ( [r1] => abc7 [r2] => cbd4 [r3] => def9 )。就是说问题主正则里的\d基本没用。 所以我就太奇怪了,于是才发了提问。preg_match( '/abc\d/', 'abc2222', $foo ); 的结果是abc2没错。 现在的问题是,为什么问题主的正则里\d会没用?难道是我版本的问题?PHP 5.4.3。 |
13
Sunyanzi 2013-06-07 22:26:45 +08:00 1
|
14
raincious 2013-06-07 22:31:49 +08:00 1
@Sunyanzi 嗯,确实是例子,我现在满脸黑线的看着问题主。
我先看了他的$a和$b,然后看了他的结果。然后跟你一样写了两个循环,然后。。死活不能匹配,然后拆了循环一个个匹配,还是不行,然后刷新了页面,看到了你的帖子,代码原样贴上去,结果也跟楼主的结果不一样。 然后我就猛然发现了个\d,删掉了,就正常得到结果了。然后我就把结果贴上来了。 我决定洗洗睡了。 |
16
7sj525bL0Wy7FOx9 2013-06-08 00:06:01 +08:00
@raincious 哈哈,其实我问这个问题重点是怎么循环重组到一个新数组,我想把原来的规则搬过来,但是太长了不利于描述问题,于是随便写了个 哈哈
|
17
PrideChung 2013-06-08 00:31:59 +08:00 1
你应该在收到回信的HTTP请求的时候再去判断时间,而不是单纯的在输出页面的时候把按钮灰掉,要是打开回复页面的时候还没超过24小时,然后那个页面就挂着半天不动了,过了24小时后再回复怎么办。
|
18
brando OP 谢谢@PrideChung 关于http的请求其实已经做了,因为当时考虑到要知道点击链接之后,判断是否已阅读,所以在点击的时候已经触发了http的请求了,并且会更新数据库。(嘻嘻,当然我自己不是什么程序员,真的要考虑很周到是不太可能滴...)
最后感谢V2ex的回复者和查看的朋友们。 |