вторник, 22 апреля 2014 г.

Ошибка в php: Segmentation fault

Однажды под конец рабочего дня я столкнулся с ошибкой:
-bash: line 10: 29379 Segmentation fault  php export_groups.php
Возникала она при запуске скрипта export_groups.php
include ("export_groups.php");
$fileNameGroups = 'site_groups.csv';
$siteExport = new SiteExport($fileNameGroups);
$siteExport->generateGroupsCsv();

Оказалось, что Segmentation fault (Ошибка сегментации (англ. Segmentation fault или сокращённо segfault) — ошибка программного обеспечения, возникающая при попытке обращения к недоступным для записи участкам памяти либо при попытке изменения памяти запрещённым способом.

Причина ошибки состояла в том, что скрипт пытался импортировать сам себя:
include ("export_groups.php");

пятница, 4 апреля 2014 г.

Извлечь табельный номер из строки

Задание. Из строк 'Таб. № 101', 'Таб.  №  102', 'Таб. 103' посредством функции preg_match() извлечь табельные номера и поместить их в переменную $tabel_num_arr.

Решение:
$strings = array(
'Таб. № 101',
'Таб.  №  102',
'Таб. 103',
);
$matches = array();
$tabel_num_arr = array();
foreach($strings as $str) {
    $is_tabel_num = preg_match('/Таб\. *(?:№)? *(\d+)/', $str, $matches);
    if ($is_tabel_num === 1 && $matches[1]) {
        $tabel_num_arr[] = $matches[1];
    }
}
var_dump($tabel_num_arr);
/*
Результат:
array
  0 => string '101' (length=3)
  1 => string '102' (length=3)
  2 => string '103' (length=3)
*/

Примечательным здесь является регулярное выражение 
/Таб\. *(?:)? *(\d+)/
В этом регулярном выражении важным моментом является незахватываемая группа, обрамляемая символами (?:   ) 
Выражение, обрамленное этими символами, не попадает в массив $matches.

Ох уж этот PHP

Добрый день, дорогие друзья!

Что же это за язык такой - PHP? Читается как "пи эйч пи", а не "пэ хэ пэ" или "пых". Это один из наиболее популярных языков для веб-разработки. Отличительной его чертой является простота освоения и интуитивная понятность работы при построении веб-страницы.
PHP освоить гораздо проще, чем C# или Java.