0

Как сделать первую букву в строке строчной?

Казалось бы, что за вопрос? Все очень просто: ucfirst и готово, в чем проблема?

А проблема возникает в тот момент, когда вы работает в UTF-8. В моем случае — постоянно.

Как известно, функция ucfirst в php не работает со строками в UTF-8 кодировке.

Поэтому я использую следующую функцию:

function mb_ucfirst($string)
{
    $string = mb_strtoupper(mb_substr($string, 0, 1)) . mb_substr($string, 1);
    return $string;
}
0

Битрикс показывает пустое окно вместо свойств компонента

При нажатии на свойства компонента, вместо привычного диалога с настройками компоненты Битрикс показывает пустой диалог.

Проблема в том, что переменная pcre.recursion_limit в php.ini стоит больше 1000 и php валится с переполнением стека.

Эта же проблема не дает пройти тест «Проверка системы», проверка валится на тесте «Размер стека и pcre.recursion_limit» (или на предыдущем «Передача объектов по ссылке»).

Решение: установить значение переменной pcre.recursion_limit в рекомендованное Битриксом — 1000.

Если не помогло, уменьшать пока не поможет 🙂 У меня завелось со значением 500.

Ссылки по теме: http://max22.ru/pitfalls/site-checker/

0

Разные способы ограничить текст по количеству слов

Довольно часто нужно ограничить текст по количеству строк.

Понятно, что это не сложно и способов это сделать довольно много.

Но вот самые красивые.

Здесь интересное решение с массивами:

   function limit_words($string, $word_limit)
   {
	$words = explode(' ',$string);
	return trim(implode(' ', array_splice($words, 0, $word_limit))) .'...';
   }

А здесь вся сила и красота регулярных выражений:

    function limit_words($string, $word_limit)
    {
        return preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $word_limit)) .'...';
    }
0

Доступ к сетевым ресурсам Windows из PHP

Столкнулся с проблемой, нужно было прочитать содержимое папки, которая находится в сети. Например, для поиска в удалённой папке файлы по маске. Штатные функции opendir и glob не помогали. Я перепробовал всё: и подключал сетевой диск, и вызывал консольные команды, и попытался задействовать Windows Scripting через COM. Ничего не помогало.

Continue Reading

0

Черные квадраты вместо фотографий при импорте из 1С в Битрикс

При выгрузке из 1С на сайте получаем вместо фотографий черные квадраты. Как быть и что же делать? Самое главное: кто виноват?

Это связано с тем, что в настройках инфоблока стоит опция «уменьшать изображения». И инфоблок честно пытается их уменьшить.

Но бывают не совсем корректно сформированные изображения (у меня jpeg). По разным причинам: битая флэшка, глупый фотоаппарат, глупый фотограф. Из-за этого библиотка GD (которую использует Битрикс) не может их открыть и отправляет Warning. Но так как Warning’и подавлены, лога импорта нет (о, как бы хотелось его получить) и нет проверки на валидность открытого файла, в итоге получаются черные квадраты.

Для того чтобы инфоблок пропускал «неправильные» картинки, нужно в файл /bitrix/modules/iblock/classes/general/iblock.php добавить проверку: смогла ли GD открыть наше изображение? В строке 2595 добавим строчки:


if ($image === false)
     return GetMessage("IBLOCK_BAD_FILE_UNSUPPORTED");

И система будет просто пропускать проблемные файлы.

20

.htaccess и php_value mbstring.func_overload

Всё время забываю, что в последних версиях PHP нельзя выставлять параметры модуля mbstring в .htaccess.

Пора выковать калёным железом где-нибудь на заметном месте:

В последних версиях PHP нельзя выставлять параметры модуля mbstring в .htaccess. Только в php.ini.

Continue Reading