小编net*_*der的帖子

如何在PHP中将ereg表达式转换为preg?

由于自PHP 5.3.0以来不推荐使用POSIX正则表达式(ereg),因此我想知道将旧表达式转换为PCRE(Perl兼容正则表达式)(preg)的简单方法.

每个例子,我有这个正则表达式:

eregi('^hello world');
Run Code Online (Sandbox Code Playgroud)

如何将表达式转换为preg_match兼容表达式?

注意:此帖子用作与从ereg转换为preg相关的所有帖子的占位符,以及相关问题的重复选项.请不要关闭这个问题.

有关:

php pcre preg-replace preg-match ereg

135
推荐指数
4
解决办法
6万
查看次数

使用awk调用可执行程序

我有一个C程序,我想在shell脚本中使用awk调用.我怎么能这样做?

shell awk

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

PHPUnit和数据提供者的问题

我有以下测试用例:

include_once('../Logger.php');

class LoggerTest extends PHPUnit_Framework_TestCase {

    public function providerLogger() {
        return new Logger;
    }

    /**
     * @dataProvider providerLogger
     */
    public function testAddStream($logger) {
        $this->assertTrue(false);
    }

}
Run Code Online (Sandbox Code Playgroud)

当我在PHPUnit中运行它时,我得到:

PHPUnit 3.4.14 by Sebastian Bergmann.

..........

Time: 0 seconds, Memory: 5.75Mb

OK (1 tests, 0 assertions)
Run Code Online (Sandbox Code Playgroud)

测试应该失败,但事实并非如此.我试过:

public function providerLogger() {
    return array(new Logger);
}
Run Code Online (Sandbox Code Playgroud)

但我得到:

The data provider specified for LoggerTest::testAddStream is invalid.
Run Code Online (Sandbox Code Playgroud)

我试着宣布它static(就像手册所说的那样),但仍然没有区别.

我记得以前以类似的方式工作,但我可能是错的.我错过了什么?

在此先感谢您的帮助.

PHP 5.3.3上的PHPUnit 3.4.14(取自PEAR)

php phpunit unit-testing dataprovider

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

如果malloc失败怎么办?

如果malloc分配失败,我们应该再试一次吗?

在这样的事情:

char* mystrdup(const char *s)  
{
    char *ab = NULL;

    while(ab == NULL) {
        ab=(char*)malloc(strlen(s)+1);  
    }

    strcpy(ab, s);
    return ab;
}
Run Code Online (Sandbox Code Playgroud)

while循环对检查内存分配有效吗?

c memory malloc

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

Codeigniter活动记录:大于语句

我正在尝试将"大于"where语句转换为CI的Active Record语法.当我使用这个片段

    $this->db->join('product_stocks', "product_stocks.size_id_fk = product_attributes.id", "left");
    $this->db->where('product_stocks.stock_level', '> 1');      
    $result = $this->db->get('product_attributes')->result_array();
Run Code Online (Sandbox Code Playgroud)

然后打印$ this-> db-> last_query(); 显示WHEREproduct_stocks .stock_level = '> 1'当然不正确.可以这样做吗?

php activerecord codeigniter

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

使用美元符号作为节点名称访问PHP对象

我正在使用每个PHP的YouTube数据API,并以json格式请求来自特定用户的视频.json_decode之后的结果如下(缩短示例):

stdClass Object
(
    [version] => 1.0
    [encoding] => UTF-8
    [feed] => stdClass Object
        (
            [xmlns] => http://www.w3.org/2005/Atom
            [xmlns$media] => http://search.yahoo.com/mrss/
            [xmlns$openSearch] => http://a9.com/-/spec/opensearchrss/1.0/
            [xmlns$gd] => http://schemas.google.com/g/2005
            [xmlns$yt] => http://gdata.youtube.com/schemas/2007
    )
)
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何使用PHP访问节点"xmlns $ media"?在美元符号内它不起作用或者有没有我没有得到的方法?

php json youtube-api

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

有没有办法在Linux中的32位程序中获得64位time_t

在Windows上我可以打电话:

_time32(__time32_t); // to get 32bit time_t
_time64(__time64_t); // to get 64bit time_t
Run Code Online (Sandbox Code Playgroud)

(32位和64位程序)

在Linux中有没有办法做到这一点(用GCC编译)?

c linux time gcc

15
推荐指数
3
解决办法
2万
查看次数

如何将PHP脚本伪装成浏览器?

我们一直在使用来自网站的信息一段时间(如果您提及源代码我们这样做,该网站允许的内容)我们一直在手动复制信息.你可以想象这可能会很快变得乏味,所以我一直试图通过PHP脚本获取信息来自动化这个过程.

我正在尝试获取的URL是:

http://mediaforest.ro/weeklycharts/viewchart.aspx?r=WeeklyChartRadioLocal&y=2010&w=46 08-11-10 14-11-10
Run Code Online (Sandbox Code Playgroud)

如果我在浏览器中输入它,它会起作用,如果我尝试使用file_get_contents(),我会收到错误的请求

我想他们检查了客户端是否是浏览器,所以我推出了基于CURL的解决方案:

$ch = curl_init();

$header=array(
  'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12',
  'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
  'Accept-Language: en-us,en;q=0.5',
  'Accept-Encoding: gzip,deflate',
  'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7',
  'Keep-Alive: 115',
  'Connection: keep-alive',
);

curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_COOKIEFILE,'cookies.txt');
curl_setopt($ch,CURLOPT_COOKIEJAR,'cookies.txt');
curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
$result=curl_exec($ch);

curl_close($ch);
Run Code Online (Sandbox Code Playgroud)

我已经检查过,标题与我的浏览器标题完全相同,我仍然收到错误请求

所以我试了另一个解决方案

http://www.php.net/manual/en/function.curl-setopt.php#78046
Run Code Online (Sandbox Code Playgroud)

不幸的是,这也不起作用,我没有想法.我错过了什么?

php user-agent curl

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

mcrypt安装的问题

我已经要求系统管理员在服务器上安装mcrypt,他们说一切正常.但是当我运行我的简单脚本时,我得到了这个.

警告:mcrypt_get_iv_size()[function.mcrypt-get-iv-size]:模块初始化失败

它来自这条线:

$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256,MCRYPT_MODE_ECB);
Run Code Online (Sandbox Code Playgroud)

现在,从这段代码:

$algorithms = mcrypt_list_algorithms("/usr/local/bin/mcrypt");

foreach ($algorithms as $cipher) {
    echo "$cipher<br />\n";
} 
Run Code Online (Sandbox Code Playgroud)

我明白了:

警告:mcrypt_list_algorithms()[function.mcrypt-list-algorithms]:在模块目录中找不到算法

当我运行这个:

$modes = mcrypt_list_modes("/usr/local/bin/mcrypt");

foreach ($modes as $mode) {
    echo "$mode <br />\n";
}
Run Code Online (Sandbox Code Playgroud)

我明白了:

警告:mcrypt_list_modes()[function.mcrypt-list-modes]:在模块目录中找不到模式

但是,运行此命令时此命令

which mcrypt; mcrypt -v
Run Code Online (Sandbox Code Playgroud)

生产:

/usr/local/bin/mcrypt
Mcrypt v.0.9.9 (x86_64-unknown-linux-gnu)
Linked against libmcrypt v.2.5.7
Copyright (C) 1998-2002 Nikos Mavroyanopoulos (nmav@gnutls.org)
Run Code Online (Sandbox Code Playgroud)

是否已正确安装/配置mcrypt

更新:

我这样做了:

whereis libmcrypt
Run Code Online (Sandbox Code Playgroud)

......得到了结果:

libmcrypt: /usr/local/lib/libmcrypt /usr/local/lib/libmcrypt.so /usr/local/lib/libmcrypt.la
Run Code Online (Sandbox Code Playgroud)

我也改变了:

$modes = mcrypt_list_modes("/usr/local/bin/mcrypt");
Run Code Online (Sandbox Code Playgroud)

至...

$modes = mcrypt_list_modes("/usr/local/lib/libmcrypt");
$algorithms …
Run Code Online (Sandbox Code Playgroud)

php centos mcrypt

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

忽略file_get_contents HTTP包装器中的错误?

下面的代码是查询我正在建立的大学项目的搜索引擎的在线词库,但我遇到了file_get_contents "未能打开流"错误的问题.当我发送词库时,词库无法识别,它会引发错误.我正在尝试编写一段代码来忽略错误,只是在没有信息的情况下继续进行.

$thesaurus_search="http://words.bighugelabs.com/api/2/0089388bb57f/".$this->formatted_query."/php";
$result_thesaurus=file_get_contents($thesaurus_search);
Run Code Online (Sandbox Code Playgroud)

我试过了:

if (file_get_contents($thesaurus_search) != NULL)
{ // do stuff }
Run Code Online (Sandbox Code Playgroud)

...但它不起作用,因为它仍然返回某种字符串.

我该怎么处理这种情况?

php file-get-contents

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