|
Posted by Chung Leong on 06/06/06 21:23
Yandos wrote:
> Hi all,
>
> I'd like to work with a binary file....
>
> I read the whole file into variable (it conatains binary data from 00-FF):
>
> $fp=fopen($cfg,"r");
> $content=fread($fp,filesize($cfg));
> fclose($fp);
>
> // and then I'd like to check if it contains special binary sequence, let's say bytes "00 01
> 02 03":
>
> $replacestring="/\x00\x01\x02\x03/im";
>
> if (preg_match($replacestring,$content)==0) {
> echo("bad input file format");
> exit();
> }
>
> but i get error message:
>
> <b>Warning</b>: preg_match(): No ending delimiter '/' found in <b>test.bat</b> on
> line <b>57</b><br />
>
> I think it is maybe because php uses strings terminated with null, but can i force php to
> use strings with predefined length for example? Is there a way to work with strings
> containing null characters?
>
> Thank you in advance.
>
> Y.
The PCRE library does expect the pattern to be a null-terminate string.
It is capable of looking for \0 though. Instead of the double-quoted
string, use single-quotes instead:
$replacestring='/\x00\x01\x02\x03/im';
Now PCRE will see the escape sequences and correctly compile the regexp.
[Back to original message]
|