header

content

Видео из Rutube по ссылке
php (php)
Видео из Rutube по ссылке
<?
$rutube_url = 'https://rutube.ru/video/ebdba2ad5128d00a2b04582425b5df36/'; // ссылка на страницу с видео
$file_id = preg_replace("#https://rutube\.ru/video/([a-f0-9]+)/?#is", "\$1", $rutube_url);  
?>

<div class="bg_rutube_videoContainer">
     <iframe class="bg_rutube_video" src="https://rutube.ru/video/embed/<? echo $file_id; ?>" allowfullscreen frameborder="0">
     </iframe>
</div>
Склонение чисел
php (php)
Склонение чисел
<?php
// некоторые варианты окончаний м/ж/с рода
$arNum1 = array( '0' => '', '1' => '', '2' => 'а', '3' => 'а', '4' => 'а', '5' => '', '6' => '', '7' => '', '8' => '', '9' => '', );
$arNum2 = array( '0' => 'ок', '1' => 'ка', '2' => 'ки', '3' => 'ки', '4' => 'ки', '5' => 'ок', '6' => 'ок', '7' => 'ок', '8' => 'ок', '9' => 'ок', );
$arNum3 = array( '0' => 'й', '1' => 'е', '2' => 'я', '3' => 'я', '4' => 'я', '5' => 'й', '6' => 'й', '7' => 'й', '8' => 'й', '9' => 'й', );
?>

<?php
$count = 23421342; // пример
?>

<?php
$last_letter = '';
$last_num = substr($count, -1); // получаем последнюю цифру числа
if(isset($last_num) && $last_num){$last_letter = $arNum3[$last_num]; }
?>


<?php echo $count; ?> предложени<?php echo $last_letter; ?>
Преобразуем ссылки в текст
php (php)
Преобразуем ссылки в текст
$content =  preg_replace("#<a href=[^>]*.(.*?)<\/a>#is", "\$1", $content);
phpQuery
php (php)
phpQuery

include_once(__DIR__ . '/cclassparser.php'); // подключаем парсер

$donor_url = 'https://site.com'; // ссылка на страницу парсинга

$arHtml = Parser::getPage(["url" => $donor_url]);
$content = $arHtml["data"]["content"];

include_once(__DIR__ . '/phpQuery.php'); // подключаем phpQuery
$mainpage = phpQuery::newDocument($content);

$page_h1 = $mainpage->find('h1');
$page_h1->find('a')->remove(); // удалить ссылки из заголовка
$h1 = $page_h1->text();

Фоновое изображение

Элемент на странице:
<div class="photo" style="background-image: url(https://site.com/image.jpg);"></div>

Действие:
$img_item = $mainpage->find('.photo');
$str = $img_item->attr('style');
preg_match("(background-image: url\((.+)\))", $str, $result);
$ar_img = $result;

Результат:
$ar_img => Array
(
[0] => background-image: url(https://site.com/image.jpg)
[1] => https://site.com/image.jpg
)
Warning: Trying to access array offset on value of type bool
Warning: Trying to access array offset on value of type bool
$id_block_projects = $el["IBLOCK_ID"];

изменить на:

$id_block_projects = (is_array($el) ? $el["IBLOCK_ID"] : NULL);
Argument #1 ($value) must be of type Countable|array, null given (0)
Argument #1 ($value) must be of type Countable|array, null given (0)
Данная ошибка характерна, например, для функций count(), sort(), ksort() и подобных.

В битриксе можно часто встретить подобный код, которым разработчики проверяли наличие элементов в массиве и, в зависимости от результата, выполняли какое либо действие:

if (count($arResult["ITEMS"]) > 0) {}
или
if (count($arResult["ITEMS"])) {}

Ранее данная конструкция нам возвращала false и в случае если $arResult["ITEMS"] === Array(), и в случае если $arResult["ITEMS"] неопределен. Теперь же возникнет ошибка, если $arResult["ITEMS"] не определен или его значение не может быть "посчитано", например если значение типа Integer

Быстро исправить данную ошибку можно следующим образом:

if (is_countable($arResult["ITEMS"]) && count($arResult["ITEMS"]) > 0)
Или
if (is_array($arResult["ITEMS"]) && count($arResult["ITEMS"]) > 0)

Главная суть в том, что переменная, передаваемая в функцию count() должна существовать, быть определена и иметь тип, который может быть "посчитан", например Array

Для быстрого решения этой ошибки в функциях сортировки sort(), ksort() и т.д. можно использовать следующий код:

if (is_array($arResult["ITEMS"])) sort($arResult["ITEMS"]);

А так же возможен вариант явного приведения переменной к необходимому типу:

$arResult["ITEMS"] = (array)$arResult["ITEMS"];
Или
sort((array)$arResult["ITEMS"]);


Но в данном случае нужно понимать, что изначальное значение типа null, boolean, integer будет приведено к типу Array, что не всегда правильно для дальнейшего выполнения кода
PHP Fatal error: Array and string offset access syntax with curly braces is no longer supported
PHP Fatal error: Array and string offset access syntax with curly braces is no longer supported
возникает в среде PHP 8 и выше из-за изменения синтаксиса доступа к элементам массива. Теперь для этого допускается использовать только квадратные скобки.

Чтобы исправить ошибку, нужно заменить фигурные скобки { } на квадратные скобки [ ] в коде, где используется доступ к массиву с помощью фигурных скобок.

Например:

$string = $chars{rand(0, $chars_length)};

изменить:

$string = $chars[rand(0, $chars_length)];


//////////////////////////////
Другой вариант:

Array and string offset access syntax with curly braces is no longer supported

$url{0}

изменить:

substr($url, 0, 1)
Убрать эмодзи из текста
php (php)
Убрать эмодзи из текста
$text = preg_replace('~[\x{10000}-\x{10FFFF}]~u', '', $text);
Перевести текст в транслит
php (php)
Перевести текст в транслит
$text = 'бла-бла-бла :)';

$tr = array(
        "А"=>"A","Б"=>"B","В"=>"V","Г"=>"G","Д"=>"D",
        "Е"=>"E","Ё"=>"YO","Ж"=>"J","З"=>"Z","И"=>"I",
        "Й"=>"Y","К"=>"K","Л"=>"L","М"=>"M","Н"=>"N",
        "О"=>"O","П"=>"P","Р"=>"R","С"=>"S","Т"=>"T",
        "У"=>"U","Ф"=>"F","Х"=>"H","Ц"=>"C","Ч"=>"CH",
        "Ш"=>"SH","Щ"=>"SCH","Ъ"=>"","Ы"=>"YI","Ь"=>"",
        "Э"=>"E","Ю"=>"YU","Я"=>"YA","а"=>"a","б"=>"b",
        "в"=>"v","г"=>"g","д"=>"d","е"=>"e","ё"=>"yo","ж"=>"j",
        "з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l",
        "м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
        "с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h",
        "ц"=>"c","ч"=>"ch","ш"=>"sh","щ"=>"sch","ъ"=>"y",
        "ы"=>"y","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya"
    );
$text_tmp = strtr($text,$tr); // в транслит
$text_tmp = preg_replace('/[^A-Za-z0-9_\-]/', '', $text_tmp); // удаляем мусор
$text = strtolower(trim($text_tmp, '-')); // преобразуем в нижний регистр

echo $text;
Обрезать строку по словам
php (php)
Обрезать строку по словам
/**
* Обрезает строку до определённого количества символов не разбивая слова.
* Поддерживает многобайтовые кодировки.
* @param string $str строка
* @param int $length длина, до скольки символов обрезать
* @param string $postfix постфикс, который добавляется к строке
* @param string $encoding кодировка, по-умолчанию 'UTF-8'
* @return string обрезанная строка
*/
function mbCutString($str, $length, $postfix='...', $encoding='UTF-8')
{
    if (mb_strlen($str, $encoding) <= $length) {
        return $str;
    }
  
    $tmp = mb_substr($str, 0, $length, $encoding);
    return mb_substr($tmp, 0, mb_strripos($tmp, ' ', 0, $encoding), $encoding) . $postfix;
}
Сделать первую букву заглавной
php (php)
Сделать первую букву заглавной
function upFirstLetter($str, $encoding = 'UTF-8')
{
    return mb_strtoupper(mb_substr($str, 0, 1, $encoding), $encoding)
    . mb_substr($str, 1, null, $encoding);
}

echo upFirstLetter('дом'); // выведет "Дом"
console.log и php
php (php)
console.log и php
function debug_to_console($data) {
    $output = $data;
    if (is_array($output))
        $output = implode(',', $output);
    echo "<script>console.log('Debug Objects: " . $output . "' );</script>";
}
Оставить только цифры
php (php)
Оставить только цифры
$str = '{"10":"OK"}';
$strWithoutChars = preg_replace('/[^0-9]/', '', $str);
echo $strWithoutChars;
Убрать двойные пробелы
php (php)
Убрать двойные пробелы
$text = preg_replace('/[^\S\r\n]+/', ' ', $text);
Убрать нули в начале числа
php (php)
Убрать нули в начале числа
$y = '000000011';
echo (int)$y;

или

$y = '000000011';
print ltrim($y,'0');