В тексте (вакансии) есть три основных ключа : Требования, Условия, Обязанности.
вот пример :
В строительную компанию, на постоянную работу требуются специалисты по отделке помещений различного назначения.
Требования:
- Опыт работы в сфере ремонтно-строительных услуг (квартиры, офисы, магазины) от 1 года
- Аккуратность, внимательность, стрессоустойчивость
Обязанности:
- Своевременное, качественное выполнение работ по отделке помещений различного назначения (квартиры, офисы, торговые площади)
Условия:
- График работы 6/1
- Объекты г. Иваново/Ивановская область
Эти ключи могут быть в разном положении, некоторые могут отсутствовать, но всегда после них идет описание.
Возможно ли как-то разделить текст на несколько логических частей (нужно в базу по отдельным колонка занести будет в итоге), чтобы более-менее было все логично по тексту ?
Решение "в лоб":
<?php
$data = preg_split('/(Требования:|Обязанности:|Условия:)/u', $str, -1, PREG_SPLIT_DELIM_CAPTURE);
На выходе получите массив такого вида:
array (
0 => 'В строительную компанию, на постоянную работу требуются специалисты по отделке помещений различного назначения.
',
1 => 'Требования:',
2 => '
- Опыт работы в сфере ремонтно-строительных услуг (квартиры, офисы, магазины) от 1 года
- Аккуратность, внимательность, стрессоустойчивость
',
3 => 'Обязанности:',
4 => '
- Своевременное, качественное выполнение работ по отделке помещений различного назначения (квартиры, офисы, торговые площади)
',
5 => 'Условия:',
6 => '
- График работы 6/1
- Объекты г. Иваново/Ивановская область',
)
Теперь можно ориентируясь на ключевые слова, которые будут отдельными элементами массива, определить идущий за ними и относящийся к ним контент. Понятное дело, что точность разбора в таком варианте - очень относительная.
Можно собрать шаблон для получения слов, за которыми находится двоеточие с последующим описанием, и сохранять совпавшие подстроки по отдельным ячейкам массива. Но так как "ключевые слова" могут располагаться в разных позициях, то привязаться к конкретному элементу результирующего массива не выйдет - понадобится ещё какой-то дальнейший разбор результирующего массива:
$str = 'В строительную компанию, на постоянную работу требуются специалисты по отделке помещений различного назначения.
Требования:
- Опыт работы в сфере ремонтно-строительных услуг (квартиры, офисы, магазины) от 1 года
- Аккуратность, внимательность, стрессоустойчивость
Обязанности:
- Своевременное, качественное выполнение работ по отделке помещений различного назначения (квартиры, офисы, торговые площади)
Условия:
- График работы 6/1
- Объекты г. Иваново/Ивановская область';
$patt = '~\pL+:[\r\n]+^-[\s\w(),./-]+$~um';
preg_match_all($patt, $str, $arr);
var_dump($arr);
Собственно готовое решение будет выглядеть так:
$result = [];
preg_replace_callback(
'~\pL+:[\r\n]+^-[\s\w(),./-]+$~um',
function($a)use(&$result){
preg_match('~(\pL+):~u', $a[0], $key);
$result[$key[1]] = str_replace($key[0], '', $a[0]);
},
$str
);
Доступ к необходимым элементам можно получить по ключам:
echo $result['Обязанности'];
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Пытался установить на сайт оплату через Paysera, но так и не могу додуматься как связать html страничку с php файлом, который предоставляется в оф документации...
Нужно парсингом (можно cUrl ) получить самую первую страницу поиска гугл по конкретному запросу, мне нужно получить только вот эту информацию: