{
    "version": "https:\/\/jsonfeed.org\/version\/1",
    "title": "Блог Чуденкова Алексея, заметки с тегом: php",
    "home_page_url": "https:\/\/blog.chudenkov.ru\/tags\/php\/",
    "feed_url": "https:\/\/blog.chudenkov.ru\/tags\/php\/json\/",
    "icon": "https:\/\/blog.chudenkov.ru\/user\/userpic@2x.jpg",
    "author": {
        "name": "Чуденков Алексей",
        "url": "https:\/\/blog.chudenkov.ru\/",
        "avatar": "https:\/\/blog.chudenkov.ru\/user\/userpic@2x.jpg"
    },
    "items": [
        {
            "id": "82",
            "url": "https:\/\/blog.chudenkov.ru\/all\/izbavlyaemsya-ot-problem-v-pagespeed-insights\/",
            "title": "Избавляемся от проблем в PageSpeed Insights",
            "content_html": "<p>Для этого нам поможет простой скрипт, который будет отдавать роботу PageSpeed Insights пустые результаты, вместо реальных. Вот стоит у вас счётчик Метрики или Аналитикс, из-за которых занижаются показатели. Влиять на код счётчика вы не можете. Что делать?<\/p>\n<pre class=\"e2-text-code\"><code>&lt;? if(strpos($_SERVER['HTTP_USER_AGENT'],'Chrome-Lighthouse')):?&gt;\r\n&lt;? else: ?&gt;\r\n\/\/ your code here \r\n&lt;? endif; ?&gt;<\/code><\/pre>",
            "date_published": "2021-09-09T15:10:03+03:00",
            "date_modified": "2021-09-09T15:09:57+03:00",
            "_date_published_rfc2822": "Thu, 09 Sep 2021 15:10:03 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "82",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "79",
            "url": "https:\/\/blog.chudenkov.ru\/all\/vodyanoy-znak-1s-bitriks\/",
            "title": "Водяной знак 1С-Битрикс",
            "content_html": "<p>Задача: добавить watermark на товары импортируемые из 1С.<br \/>\nОткроем result_modifier.php в catalog.element, catalog.sections и добавим функцию:<\/p>\n<pre class=\"e2-text-code\"><code>$arWatermark = Array(\r\n\tarray(\r\n\t\t&quot;name&quot; =&gt; &quot;watermark&quot;, \r\n\t\t&quot;position&quot; =&gt; &quot;center&quot;, \r\n\t\t&quot;size&quot; =&gt; &quot;real&quot;, \r\n\t\t&quot;type&quot; =&gt; &quot;image&quot;, \r\n\t\t&quot;alpha_level&quot; =&gt; 50,\r\n\t\t&quot;file&quot; =&gt; $_SERVER['DOCUMENT_ROOT'].&quot;\/img\/watermark.png&quot;\r\n\t)\r\n);<\/code><\/pre><p>Теперь при вызове функции ResizeImageGet нужно добавить наш водяной знак:<\/p>\n<pre class=\"e2-text-code\"><code>if ($arResult['DETAIL_PICTURE']['SRC']) {\r\n$big_file = CFile::ResizeImageGet($arResult['DETAIL_PICTURE']['ID'], array('width' =&gt; 2000, 'height' =&gt; 2000), BX_RESIZE_IMAGE_PROPORTIONAL, true, $arWatermark);\r\n$arResult['DETAIL_PICTURE']['SRC'] = $big_file['src'];<\/code><\/pre>",
            "date_published": "2020-06-22T17:26:25+03:00",
            "date_modified": "2020-06-22T17:26:20+03:00",
            "_date_published_rfc2822": "Mon, 22 Jun 2020 17:26:25 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "79",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "76",
            "url": "https:\/\/blog.chudenkov.ru\/all\/php-vyvodim-tolko-pervy-abzac-predlozheniya\/",
            "title": "PHP: Выводим только первый абзац предложения",
            "content_html": "<p>Иногда очень удобно выводить в разметке Open Graph самый первый абзац текста.<\/p>\n<pre class=\"e2-text-code\"><code>$og_description = substr($content[&quot;text&quot;],0, strpos($content[&quot;text&quot;],'&lt;\/p&gt;')-1 );<\/code><\/pre>",
            "date_published": "2020-02-15T11:15:32+03:00",
            "date_modified": "2020-02-15T11:15:28+03:00",
            "_date_published_rfc2822": "Sat, 15 Feb 2020 11:15:32 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "76",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "73",
            "url": "https:\/\/blog.chudenkov.ru\/all\/php-povernut-vse-izobrazheniya-v-papke\/",
            "title": "PHP: повернуть все изображения в папке",
            "content_html": "<p>Возникла потребность сменить ориентацию у 5 гигабайт фотографий с тканями. Так как понятия «небо» и «земля» в этом случае отсутствуют, написал скрипт на PHP, который анализирует ширину и высоту всех изображений в папке, и в случае портретной ориентации, происходит поворот изображения на 90 градусов.<\/p>\n<p>В корне сайта создадим файлик с таким содержимым:<\/p>\n<pre class=\"e2-text-code\"><code>&lt;?php\r\n$pathto = getcwd(); \/\/ узнаём текущую директорию файла\r\n$dir = $pathto . 'путь к папке с файлами'; \/\/ от корня сайта\r\n$f = scandir($dir); \/\/ получаем все файлы в папке\r\n\r\nforeach ($f as $file){\r\n    if(preg_match('\/\\.(jpg)\/', $file)) \/\/ проверяем расширение на JPG\r\n        {\r\n        $filename = $dir.$file; \/\/ формируем полный путь к изображению\r\n        $size = getimagesize($filename); \/\/ получаем размеры изображения\r\n        $width = $size[0]; \/\/ записываем значение ширины в переменную \r\n        $height = $size[1]; \/\/ записываем значение высоты в переменную\r\n        \r\n        if ($height &gt; $width) { \/\/ проверяем изображение на портретную ориентацию\r\n            $img = imagecreatefromjpeg($filename); \/\/ создадим новое изображение\r\n            $new_image = $dir.'\/rotated\/'.$file; \/\/ укажем название для будущего файла и его расположение\r\n            $imgRotated = imagerotate($img, 90, 0); \/\/ повернём изображение на 90 градусов\r\n            imagejpeg($imgRotated, $new_image, 90); \/\/ сохраним изображение\r\n        }\r\n    }\r\n}\r\n?&gt;<\/code><\/pre><p>Всё.<\/p>\n<p>P.S. У меня подвисал скрипт, даже писал 504 Bad Gateway Timeout, но все изображения в итоге перевернул.<\/p>\n",
            "date_published": "2020-02-04T23:36:28+03:00",
            "date_modified": "2020-02-04T23:36:24+03:00",
            "_date_published_rfc2822": "Tue, 04 Feb 2020 23:36:28 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "73",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "63",
            "url": "https:\/\/blog.chudenkov.ru\/all\/php-sklonenie-chislitelnyh\/",
            "title": "PHP: склонение числительных",
            "content_html": "<pre class=\"e2-text-code\"><code>\/*\r\n * $num число, от которого будет зависеть форма слова\r\n * $form_1 первая форма слова, например Яблоко\r\n * $form_2 вторая форма слова - Яблока\r\n * $form_3 третья форма множественного числа слова - Яблоков\r\n *\/\r\nfunction true_wordform($num, $form_1, $form_2, $form_3){\r\n\t$num = abs($num) % 100; \/\/ берем число по модулю и сбрасываем сотни (делим на 100, а остаток присваиваем переменной $num)\r\n\t$num_x = $num % 10; \/\/ сбрасываем десятки и записываем в новую переменную\r\n\tif ($num &gt; 10 &amp;&amp; $num &lt; 20) \/\/ если число принадлежит отрезку [11;19]\r\n\t\treturn $form_3;\r\n\tif ($num_x &gt; 1 &amp;&amp; $num_x &lt; 5) \/\/ иначе если число оканчивается на 2,3,4\r\n\t\treturn $form_3;\r\n\tif ($num_x == 1) \/\/ иначе если оканчивается на 1\r\n\t\treturn $form_1;\r\n\treturn $form_3;\r\n}<\/code><\/pre><p>Вывод:<\/p>\n<pre class=\"e2-text-code\"><code>$count = 5; \r\necho $count . ' ' . wordForm($count, 'яблоко', 'яблока', 'яблок');<\/code><\/pre>",
            "date_published": "2019-06-07T12:48:44+03:00",
            "date_modified": "2019-06-07T12:33:17+03:00",
            "_date_published_rfc2822": "Fri, 07 Jun 2019 12:48:44 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "63",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "60",
            "url": "https:\/\/blog.chudenkov.ru\/all\/php-razdelit-chislo-na-razryady\/",
            "title": "PHP: Разделить число на разряды",
            "content_html": "<p>Не люблю, когда нет разделителей разрядов в длинных числах, поэтому пришлось для себя отрыть функцию number_format.<\/p>\n<pre class=\"e2-text-code\"><code>&lt;? number_format($string, 0, '', ' '); ?&gt;<\/code><\/pre><div class=\"e2-text-picture\">\n<img src=\"https:\/\/blog.chudenkov.ru\/pictures\/Screenshot_6-1.jpg\" width=\"459\" height=\"231\" alt=\"\" \/>\n<\/div>\n",
            "date_published": "2019-05-17T23:41:23+03:00",
            "date_modified": "2019-05-17T23:45:34+03:00",
            "image": "https:\/\/blog.chudenkov.ru\/pictures\/Screenshot_6-1.jpg",
            "_date_published_rfc2822": "Fri, 17 May 2019 23:41:23 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "60",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": [
                    "https:\/\/blog.chudenkov.ru\/pictures\/Screenshot_6-1.jpg"
                ]
            }
        }
    ],
    "_e2_version": 3365,
    "_e2_ua_string": "E2 (v3365; Aegea)"
}