Okay, I like that clarification. Thanks.
It seems that if you want that info, you really should read the SOL. The format isn't particularly complicated, but I am more concerned about code synchronization. Your PHP-based SOL reader will break every time the SOL format changes, and I do expect that the format will keep evolving. Using something that shares code with Neverball would be preferable... Like a command line parameter or a simple program, or maybe even a static library.
On to the SOL format. You can see an overview of the format in share/solid_base.c:sol_stor_file(). BTW, I'm speaking of the newest version in the repo. 1.5.4 is a little different, and the file names are probably different.
What you need is the text counter (ac), dictionary counter (dc), the text array (av) and the dictionary array (dv). Luckily, the dictionary array is right after the text array, so you only need to skip a bunch of 4-byte integers.
A "dictionary" is two 4-byte integers that are offsets in the text array.
To read the level info, you iterate over the dictionary array, e.g.,
for (i = 0; i < dc; i++)
struct b_dict *dp = dv + i;
char *key = av + dp->ai;
char *value = av + dp->aj;
/* Etc. */