【问题标题】:How to find substring inside string generated from get_file_contents() on a CDR file如何在 CDR 文件上的 get_file_contents() 生成的字符串中查找子字符串
【发布时间】:2013-05-17 13:41:52
【问题描述】:

我一直在努力解决这个问题, 但直到现在都没有成功。

我需要在保存 CDR 文件时获取一个传递给 Keywork 的字符串,但据我尝试,我只是失败了!

即使它显示在网络浏览器中,我也无法读取子字符串。

搜索这个测试的字符串是“TESTKEYWORD”, 以下是我的代码:

<?php
$filename = "test.cdr";
$content = file_get_contents($filename);

if( strpos( $content, 'TESTKEYWORD' ) !== false ) {
    echo "I found the TESTKEYWORD string";
} else {
    echo "Sorry, I failed to find theTESTKEYWORD string!";
}

echo '<h2>Genarated string</h2>';
echo '<hr />';
echo $content;

如果你想尝试,我已经上传到我的网络服务器进行测试,所以你可以从那里访问。

http://liuitt.com/cdr

【问题讨论】:

  • 如果你的文件是 utf-8 编码的,你应该看这里stackoverflow.com/questions/15050710/…
  • @HenriqueBarcelos,当我测试检测字符串编码时,它返回 NULL
  • 文件中的字符串确实按照 Henrique 的建议进行了 unicode 编码。确保搜索字符串与文件中的字符串具有相同的编码。 (可能是 UTF-16 LE BE)并使用 mb_strpos。
  • 所以,@Adder,我更改了代码以查找编码,文件内容为 UTF-8,字符串为 ASCII。有没有办法将 ASCII 转换为 UTF-8?我试过 $string = iconv('ASCII', 'UTF-8//TRANSLIT', $str);但它仍然返回 ASCII

标签: php string file-get-contents cdr


【解决方案1】:

我认为最好的方法是使用preg_match() 命令,尝试以下代码

<?php
$filename = "test.cdr";
$content = file_get_contents($filename);

$reex = "/TESTKEYWORD/";

if( preg_match($reex, $content, $matches)) {
    var_dump($matches);
    echo "I found the TESTKEYWORD string";
} else {
    echo "Sorry, I failed to find theTESTKEYWORD string!";
}

【讨论】:

  • 我测试了您共享的代码,但即使我传递给正则表达式的任何内容,它也会返回 true...
  • 抱歉,在发布答案之前我无法进行适当的测试,我认为问题在于您的内容中有特殊字符。也许你可以看看“preg_quote”函数来逃避它们,然后做preg_match。希望这会有所帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-12
  • 1970-01-01
  • 2019-10-01
  • 2012-09-07
  • 2011-07-13
相关资源
最近更新 更多