PEAR is archived and read-only

This mirror preserves historical PEAR package releases and metadata so existing references remain available.

Home » Configuration » Config » Bug #6385

Allow colon in ini file key

Details

Request #6385Allow colon in ini file key
Submitted2006-01-01 07:10 UTC
Fromshannah at sfu dot ca
Assignedaashley
StatusClosed
PackageConfig
PHP VersionIrrelevant
OSAll
Roadmaps(Not assigned)

Comments

[2006-01-01 07:10 UTC] shannah at sfu dot ca

Description:
------------
Not sure if this is a bug or not, but it is handy to be able
to include colons in the keys of ini files

eg:

[section1]
widget:type = "select"
widget:label = "My Section"
widget:description = "My Description"

Currently the iniCommented will not accept the colon
character.

I have changed my local copy of Config/IniCommented.php to
allow this. The diff file is as follows:

72c72
< } elseif (preg_match('/^\s*([a-zA-
Z0-9_\-\.\s:]*)\s*=\s*(.*)\s*$/', $line, $match)) {
---
> } elseif (preg_match('/^\s*([a-zA-
Z0-9_\-\.\s]*)\s*=\s*(.*)\s*$/', $line, $match)) {

[2006-01-03 01:14 UTC] aashley at php dot net

How should these field names be handled when converting to other config file formats. For example in XML the : is used to seperate a namespace from the tag name, and unless the name space is specified in the header its not valid. I'm not sure on its allowance in Apache style configs either (tho i suspect its allowed).

Finally what is the php parse_ini_file() functions interpretation of this. It is used in IniFile.php and other than supporting comments I'd like to keep the two ini file versions as similar as possible

[2006-01-03 01:25 UTC] shannah at sfu dot ca

I see your point about XML compatibility. There doesn't
seem to be a perfect solution for the cross compatibility -
other than user responsibility to name things appropriately
if they will be using XML.

parse_ini_file() allows colons in key names. This is what I
was using prior to switching to PEAR Config. Eg:

inifile.ini
----
[section]
widget:label="Test Label"
widget:description = "Test Description"

test.php
----
<?
$arr = parse_ini_file("inifile.ini", true);
print_r($arr);
?>

outputs:

Array (
[section] =>
Array (
[widget:label] => "Test Label",
[widget:description] => "Test Description"
)
)

[2006-01-03 01:31 UTC] shannah at sfu dot ca

One possibility for the XML version would be to translate
colonized keys into nested XML tags:

eg:
[section]
widget:label = "Test Label"

translates to

<section>
<widget>
<label>Test Label</label>
</widget>
</section>

[2006-01-03 03:00 UTC] aashley at php dot net

Seeing as php's parse_ini_file() supports : in the keys I've added support for it to IniCommented.php. It is in CVS now and will be available in the next bug fix release.

I'm leaving this ticket open for now to deal with the translation to other Config formats.

[2006-02-14 00:04 UTC] aashley at php dot net

This is out there and fixed. If someone has problems with colons in other formats they can open a new bug.