Программное определение разницы между списком, разделенным запятыми, и абзацемPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Программное определение разницы между списком, разделенным запятыми, и абзацем

Сообщение Anonymous »

Я работаю над переносом данных, где в старой системе пользователям разрешалось вводить свои интересы в большое текстовое поле без каких-либо инструкций по форматированию. В результате некоторые писали в формате биографии, а другие — в формате списка, разделенного запятыми. Есть еще несколько форматов, но это основные.

Теперь я знаю, как идентифицировать список, разделенный запятыми (CSL). Это достаточно легко. Но как насчет того, чтобы определить, является ли строка CSL (возможно, короткой с двумя терминами или фразами) или просто написанным кем-то абзацем, содержащим запятую?

Кто-то подумал, что У меня есть возможность автоматически игнорировать строки, содержащие знаки препинания, и строки, не содержащие запятых. Однако я обеспокоен тем, что этого будет недостаточно или оставит желать лучшего. Поэтому я хотел бы опросить сообщество, чтобы узнать, что вы думаете. А пока я опробую свою идею.

ОБНОВЛЕНИЕ:
Хорошо, ребята, у меня есть свой алгоритм. Вот он ниже...

МОЙ КОД:

Код: Выделить всё

//Process our interests text field and get the list of interests
function process_interests($interests)
{
$interest_list = array();

if ( preg_match('/(\.)/', $interests)  0 && $word_cnt > 0)
$ratio = $delimiter_cnt / $word_cnt;

//If delimiter is found with the right ratio then we can go forward with this.
//Should not be any more the 5 words per delimiter (ratio = delimiter / words ... this must be at least 0.2)
if (!empty($delimiter) && $ratio > 0 && $ratio >= 0.2)
{
//Check for label with colon after it
$interests = remove_colon($interests);

//Now we make our array
$interests = explode($delimiter, $interests);

foreach ($interests AS $val)
{
$val = humanize($val);

if (!empty($val))
$interest_list[] = $val;
}
}
}

return $interest_list;
}

//Cleans up strings a bit
function humanize($str)
{
if (empty($str))
return ''; //Lets not waste processing power on empty strings

$str = remove_colon($str); //We do this one more time for inline labels too.
$str = trim($str); //Remove unused bits
$str = ltrim($str, ' -'); //Remove leading dashes
$str = str_replace('  ', ' ', $str); //Remove double spaces, replace with single spaces
$str = str_replace(array(".", "(", ")", "\t"), '', $str); //Replace some unwanted junk

if ( strtolower( substr($str, 0, 3) ) == 'and')
$str = substr($str, 3); //Remove leading "and" from term

$str = ucwords(preg_replace('/[_]+/', ' ', strtolower(trim($str))));

return $str;
}

//Check for label with colon after it and remove the label
function remove_colon($str)
{
//Check for label with colon after it
if (strstr($str, ':'))
{
$str = explode(':', $str); //If we find it we must remove it
unset($str[0]); //To remove it we just explode it and take everything to the right of it.
$str = trim(implode(':', $str)); //Sometimes colons are still used elsewhere, I am going to allow this
}

return $str;
}

Спасибо за вашу помощь и предложения!


Подробнее здесь: https://stackoverflow.com/questions/637 ... list-and-a
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Регулярное выражение для соответствия регионам aws, разделенным запятыми, в python
    Гость » » в форуме Python
    0 Ответы
    77 Просмотры
    Последнее сообщение Гость
  • Различайте окна с разделенным экраном и окнами произвольной формы.
    Anonymous » » в форуме Android
    0 Ответы
    34 Просмотры
    Последнее сообщение Anonymous
  • Стереоскопическое видео 360 VR с разделенным экраном в Android ExoPlayer
    Anonymous » » в форуме JAVA
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Как сделать preg_split() с шаблоном /[\s,]+/, разделенным на пробелы и точки?
    Anonymous » » в форуме Php
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Как сделать preg_split() с шаблоном /[\s,]+/, разделенным на пробелы и точки?
    Anonymous » » в форуме Php
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Php»