Пользовательские PHP-функции на все случаи жизни

в 18:48, , рубрики: php, web-разработка, Веб-разработка, метки: ,

Вашему вниманию предлагается небольшой набор функций, каждая из которых может пригодится веб-разработчику. Большинство из них нетрудно найти в интернете, но я не смог найти ни одну страницу, где была бы представлена хотя бы половина описанного.

1. Проверка на то, что строка начинается с заданной подстроки. Первый параметр — что ищем (string), второй — где (string), третий задаёт регистронезависимость (boolean).

function isStartsWith ($needle, $haystack, $ignorecase=true) {
	if ($ignorecase) {
        $needle = strtolower($needle);
        $haystack = strtolower($haystack);
    }

    return (substr($haystack, 0, strlen($needle))==$needle);
}

2. Проверка на то, что строка содержит заданную подстроку. Первый параметр — что ищем (string), второй — где (string), третий задаёт регистронезависимость (boolean).

function contains($needle, $haystack, $ignorecase=true) {
    if ($ignorecase) {
        $needle = strtolower($needle);
        $haystack = strtolower($haystack);
    }

    return strpos($haystack,$needle) ? true : false;
}

3. Сравнивает строки без учёта регистра.

function isStringsEqualsCaseIns ($srt1, $str2) {
	return strcasecmp($srt1, $str2) ? false : true;
}

4. Генерит случайную строку заданной длины из заданных символов. Первый параметр — длина возвращаемой строки (int), второй — допустимые символы (string).

function getRandomString ($length, $valid_chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789') {
    $random_string = '';

    $num_valid_chars = strlen($valid_chars);

    for ($i = 0; $i < $length; $i++) {
        $random_pick = mt_rand(1, $num_valid_chars);
        $random_char = $valid_chars[$random_pick-1];
        $random_string .= $random_char;
    }

    return $random_string;
}

5. Регистронезависимый аналог in_array. Первый параметр — что ищем (string), второй — где (array).

function inArrayCaseIns ($needle, $haystack) {
	return in_array(strtolower($needle), array_map('strtolower', $haystack));
}

6. Убирает пробелы у всех элементов массива, в том числе многомерного.

function trimArray ($input) {
    if (!is_array($input))
        return trim($input);
 
    return array_map('trimArray', $input);
}

7. Превращает массив, в том числе многомерный, в объект.

function arrayToObject ($array) {
	if(!is_array($array))
		return $array;

	$object = new stdClass();
	if (is_array($array) && count($array) > 0) {
		foreach ($array as $name=>$value) {
			$name = strtolower(trim($name));
			$object->$name = arrayToObject($value);
		}
		return $object; 
	}
	else
		return false;
}

8. Превращает объект в массив.

function objectToArray ($obj) {
	if (is_object($obj))
		$obj = get_object_vars($obj);

	if (is_array($obj))
		return array_map(__FUNCTION__, $obj);
	else
		return $obj;
}

9. Подсвечивает все слова из области поиска в тексте. Первый параметр — где подсвечивать (string), второй — что (string или array).

function highlightWords ($str, $words) {
	if ((empty($words)) || (!is_string($str)))
		return false;

	if (is_array($words))
		$words = implode ('|', $words);

 	return preg_replace ('@b('.$words.')b@si', '<strong style="background-color:yellow">$1</strong>', $str);
}

10. Возвращает слово с верным окончанием в зависимости от числительного перед ним. Работает и с русским, и с английским. Первый параметр — количество (int), второй — массив верных форм, например

array('корова','коровы','коров')

function correctEnding ($number, $after) {
    $cases = array(2, 0, 1, 1, 1, 2);
    return $number.' '.$after[($number%100>4 && $number%100<20)? 2: $cases[min($number%10, 5)]];
}

11. Распечатывает массив или объект в читабельном виде (для отладки). Первый параметр — массив или объект, с которым работаем, второй — заголовок вывода, третий — цвет выводимой информации.

function debugMessage ($message, $title = false, $color = '#008B8B') {
        echo '<table border="0" cellpadding="5" cellspacing="0" style="border:1px solid '.$color.';margin:2px;"><tr><td>';

        if (strlen($title)>0)
            echo '<p style="color:'.$color.';font-size:11px;font-family:Verdana;">['.$title.']</p>';

        if (is_array($message) || is_object($message)) {
        	echo '<pre style="color:'.$color.';font-size:11px;font-family:Verdana;">'; print_r($message); echo '</pre>';
        }
        else
            echo '<p style="color:'.$color.';font-size:11px;font-family:Verdana;">'.$message.'</p>';

        echo '</td></tr></table>';
}

12. Генерит короткую ссылку из заданной.

function getShortUrl ($url) {
    return file_get_contents('http://tinyurl.com/api-create.php?url='.$url);
}

13. Возвращает весь GET-запрос в виде строки, причём можно указывать элементы для удаления из запроса (array) и элементы для добавления. Например, мы находимся на странице example.com/test.php?a=1&b=2&c=3. Вызов функции с параметрами getCurrPageParamsAsStr(array('a','c'), array('d' => 4)) вернёт нам b=2&d=4, которые мы можем смело подставлять к нужным ссылкам.

function getCurrPageParamsAsStr ($remove = false, $add = false) {
	if(!empty($_GET)) {
		$get = $_GET;

		if ($remove) {
			$rem_el = count($remove);
			for ($i=0; $i<$rem_el; $i++)
				unset($get[$remove[$i]]);
		}
	
		if ($add) {
			foreach ($add as $key => $value)
				$get[$key] = $value;
		}

		$i = 0;
		foreach ($get as $key => $value) {
			if ($i == 0)
				$get_string = $key . "=" . $value;
			else
				$get_string .= "&" . $key . "=" . $value;

			$i++;
		}
	}
	else
		$get_string = '';
	
	return $get_string;
}

Надеюсь, что вам пригодится эта подборка.

P.S. Оставляйте в комментариях свои интересные функции — обязательно размещу, чтобы страницу можно было смело добавлять в закладки:)

Автор: kpotehin


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js