0
function(){
return preg_split('/[-]/', $_COOKIE[$cookie_login]);
}

我有这个被退回,$_COOKIE[$cookie_login] 是“1-blahblahblah”

然而,当我尝试使用上面的函数检索它时,如下所示:

$string = function();

我得到空字符串,例如$string[0]$string[1]都是空的,我做错了什么?

我试图弄清楚如何使用 preg_split 就像我使用旧拆分一样,因为我正在更改为 php 5.4

编辑:这是完整的功能:

    function get_session(){
    global $cookie_login;
    if (isset($_COOKIE[$cookie_login])){
        return preg_split('/[-]/', $_COOKIE[$cookie_login]);
    }
}

$string = get_session();

$string[0]也是空的$string[1],但是print_r($string)可以工作。

4

4 回答 4

3

您在$cookie_login函数内使用,但该变量未在任何地方定义。也许应该只是

$_COOKIE['cookie_login']

反而?

同样,[-]在正则表达式中与 just 相同-。这不是“错误”,为单个字符指定字符类只是有些多余。


后续行动:好的,既然您已经发布了更多内容,那么您可以进行重大更改

不要使用 GLOBALS你已经有了一个函数,所以传入 cookie 名称作为参数:

function get_sesssion($name) {
   return preg_split('/-/', $_COOKIE[$name]);
}
$sess = get_session('cookie_login');
于 2013-07-05T19:35:28.403 回答
1
function(){
  return explode('-', $_COOKIE[$cookie_login]);
}
于 2013-07-05T19:34:57.107 回答
0

用于isset检查 cookie 是否存在,我假设它cookie_login不是$cookie_login,或者它真的$cookie_login,尝试global $cookie_login在你的函数内部使用,或者将它作为函数传递argument(这比设置全局更好)

<?php
  function get_session() {
    global $cookie_login;
    if ( $cookie_login && isset( $_COOKIE[$cookie_login] ) ) {
      return explode( "-", $_COOKIE[$cookie_login] );
    }
    return false;
  }

  $string = get_session( 'some_cookie' );
  var_dump( $string );
?>

或作为一个函数argument

<?php
  function get_session( $cookie_login = null ) {
    if ( $cookie_login && isset( $_COOKIE[$cookie_login] ) ) {
      return explode( "-", $_COOKIE[$cookie_login] );
    }
    return false;
  }
?>

如果var_dump你得到bool(false)这意味着没有设置cookie,否则你将至少得到一个数组:\

于 2013-07-05T19:37:34.313 回答
0
preg_split('/[-]/', $_COOKIE[$cookie_login]);

作为-一个特殊的RegEx character,考虑像这样逃避它\\-

preg_split('~[\\-]~', $_COOKIE[$cookie_login]);

^ 我将as用作HTML/XML中广泛使用~的包装字符。RegEx patterns/

于 2013-07-05T19:42:59.150 回答