1<?php 2/** 3 * Created by PhpStorm. 4 * User: Chad 5 * Date: 1/1/2018 6 * Time: 9:28 PM 7 */ 8 9namespace FreeDSx\Ldap; 10 11/** 12 * Some common methods for LDAP URLs and URL Extensions. 13 * 14 * @author Chad Sikorra <Chad.Sikorra@gmail.com> 15 */ 16trait LdapUrlTrait 17{ 18 /** 19 * @var array 20 */ 21 protected static $escapeMap = [ 22 '%' => '%25', 23 '?' => '%3f', 24 ' ' => '%20', 25 '<' => '%3c', 26 '>' => '%3e', 27 '"' => '%22', 28 '#' => '%23', 29 '{' => '%7b', 30 '}' => '%7d', 31 '|' => '%7c', 32 '\\' => '%5c', 33 '^' => '%5e', 34 '~' => '%7e', 35 '[' => '%5b', 36 ']' => '%5d', 37 '`' => '%60', 38 ]; 39 40 /** 41 * Percent-encode certain values in the URL. 42 * 43 * @param string $value 44 * @return string 45 */ 46 protected static function encode(?string $value): string 47 { 48 return \str_replace( 49 \array_keys(self::$escapeMap), 50 \array_values(self::$escapeMap), 51 (string) $value 52 ); 53 } 54 55 /** 56 * Percent-decode values from the URL. 57 * 58 * @param string $value 59 * @return string 60 */ 61 protected static function decode(string $value): string 62 { 63 return \str_ireplace( 64 \array_values(self::$escapeMap), 65 \array_keys(self::$escapeMap), 66 $value 67 ); 68 } 69} 70