public function testIsValidTagName() { $this->assertTrue(Text::isValidTagName('name')); $this->assertTrue(Text::isValidTagName('_name')); $this->assertTrue(Text::isValidTagName('ns:name')); $this->assertTrue(Text::isValidTagName('year2000')); $this->assertTrue(Text::isValidTagName('year_2000')); $this->assertTrue(Text::isValidTagName('year-2000')); $this->assertTrue(Text::isValidTagName('year.2000')); $this->assertTrue(Text::isValidTagName('year 2000')); $this->assertFalse(Text::isValidTagName(':name')); $this->assertFalse(Text::isValidTagName('.name')); $this->assertFalse(Text::isValidTagName(' name')); $this->assertFalse(Text::isValidTagName('-name')); $this->assertFalse(Text::isValidTagName('2000')); }
public function testIsValidTagName() { $name = $this->faker->word; $this->assertTrue(Text::isValidTagName($name)); $this->assertTrue(Text::isValidTagName('_' . $name)); $this->assertTrue(Text::isValidTagName('ns:' . $name)); $this->assertTrue(Text::isValidTagName($name . '2000')); $this->assertTrue(Text::isValidTagName($name . '_2000')); $this->assertTrue(Text::isValidTagName($name . '-2000')); $this->assertTrue(Text::isValidTagName($name . '.2000')); $this->assertTrue(Text::isValidTagName($name . ' 2000')); $this->assertFalse(Text::isValidTagName(':' . $name)); $this->assertFalse(Text::isValidTagName('.' . $name)); $this->assertFalse(Text::isValidTagName(' ' . $name)); $this->assertFalse(Text::isValidTagName('-' . $name)); $this->assertFalse(Text::isValidTagName(mt_rand(1, 100))); }
/** * Add an array to xml. * * @param array $array. * @param string $namespace. * @return void */ public function addArray(array $array = [], $namespace = null) { foreach ($array as $name => $param) { if (is_array($param) and Text::isValidTagName($name)) { $textValue = null; if (isset($param['_'])) { $textValue = $param['_']; unset($param['_']); } if (is_numeric(key($param))) { foreach ($param as $value) { if (is_array($value)) { $this->addArray([$name => $value]); } else { $this->addChild($name, Text::boolToString($value), $namespace); } } } else { $child = $this->addChild($name, Text::boolToString($textValue), $namespace); foreach ($param as $key => $value) { if (!Text::isValidTagName($key)) { throw new Exception('Illegal character in tag name. tag: ' . $key); } if (is_array($value)) { if (is_numeric(key($value))) { foreach ($value as $k => $v) { if (is_array($v)) { $child->addArray([$key => $v]); } else { $child->addChild($key, Text::boolToString($v), $namespace); } } } else { $child->addArray([$key => $value]); } } else { $child->addAttribute($key, Text::boolToString($value)); } } } } else { if (!Text::isValidTagName($name)) { throw new Exception('Illegal character in tag name. tag: ' . $name); } $this->addChild($name, Text::boolToString($param), $namespace); } } return $this; }