Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

QuorumCollection/DotNotationParser

Open more actions menu

Repository files navigation

Dot Notation Parser

Latest Stable Version Total Downloads License ci.yml

DotNotationParser is a simple parser that will parse foo.bar.baz into [ 'foo', 'bar', 'baz' ] and foo."bar.baz" into [ 'foo', 'bar.baz' ].

Requirements

  • php: >=7.4

Installing

Install the latest version with:

composer require 'quorum/dot-notation'

Example

<?php

use Quorum\DotNotation\DotNotationParser;

require __DIR__ . '/../vendor/autoload.php';

$parser = new DotNotationParser;

$tests = [
	'foo',
	'foo.bar',
	'spaces are allowed'                  => 'foo bar.baz',
	'dots are accepted in quotes'         => '"foo.bar".baz',
	'quotes are escaped with backslashes' => '"foo\"bar\"".baz',
];

foreach( $tests as $descr => $test ) {
	echo sprintf("Parsing '%s'%s\n",
		$test,
		is_numeric($descr) ? '' : ' - ' . $descr);

	$parts = $parser->parse($test);

	echo sprintf("[ %s ]\n", implode(", ", array_map(
		function ( $a ) { return var_export($a, true); },
		$parts)));
	echo "\n";
}
Parsing 'foo'
[ 'foo' ]

Parsing 'foo.bar'
[ 'foo', 'bar' ]

Parsing 'foo bar.baz' - spaces are allowed
[ 'foo bar', 'baz' ]

Parsing '"foo.bar".baz' - dots are accepted in quotes
[ 'foo.bar', 'baz' ]

Parsing '"foo\"bar\"".baz' - quotes are escaped with backslashes
[ 'foo"bar"', 'baz' ]

Documentation

Class: Quorum\DotNotation\DotNotationParser

Class DotPathParser

Parse strings like foo."bar.baz".quux into [ 'foo', 'bar.baz', 'quux' ]

Method: DotNotationParser->parse

function parse(string $path) : array

Parse a given dot notation path into it's parts

The path is expected to be a string of dot separated keys, where keys can be
quoted with double quotes. Backslashes are used to escape double quotes inside
quoted keys.

Examples
  • 'foo.bar.baz' => [ 'foo', 'bar', 'baz' ]
  • 'foo."bar.baz"' => [ 'foo', 'bar.baz' ]
  • 'foo."bar.baz".quux' => [ 'foo', 'bar.baz', 'quux' ]
  • 'foo."bar\"baz".quux' => [ 'foo', 'bar"baz', 'quux' ]

Throws: \Quorum\DotNotation\Exceptions\ParseException

Returns:
  • string[]

About

Simple PHP Dot Notation Parser.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Morty Proxy This is a proxified and sanitized view of the page, visit original site.