Удалить все аббревиатуры из строки PHP - PullRequest
0 голосов
/ 23 мая 2011

У меня есть строка текста, в которой есть аббревиатуры, вроде как ...

$draft="The war between the CIA and NSA started in K2 when the FBI hired M";

Не могу понять, как создать новую строку со всеми аббревиатурами.

Мне нужен этот вывод ...

$newdraft="The war between the and started in when the hired";

Единственные функции php, которые я могу найти, - это удаление только тех слов, которые вы статически объявляете так!

$newdraft= str_replace("CIA", " ", $draft);

У кого-нибудь есть идеи или уже созданная функция?

Ответы [ 4 ]

4 голосов
/ 23 мая 2011

Хорошо, давайте попробуем что-нибудь написать (хотя я не могу понять, для чего это может быть полезно).

<?php

function remove_acronyms($str)
{
    $str_arr = explode(' ', $str);
    if (empty($str_arr)) return false;

    foreach ($str_arr as $index => $val)
    {
        if ($val==strtoupper($val)) unset($str_arr[$index]);
    }
    return implode(' ', $str_arr);
}

$draft = "The war between the CIA and NSA started in K2 when the FBI hired M";

print remove_acronyms($draft);

http://codepad.org/cIZSwwhV

1 голос
/ 23 мая 2011

Определение аббревиатуры: любое слово с заглавной буквы длиной не менее 2 символов.

<?php
  $draft="The war between the CIA and NSA started in K2 when the FBI hired M";

  $words = explode(' ', $draft);
  foreach($words as $i => $word)
  {
    if (!strcmp($word, strtoupper($word)) && strlen($word) >= 2)
    {
      unset($words[$i]);
    }
  }

  $clean = implode(' ', $words);

  echo $clean;
?>
0 голосов
/ 23 мая 2011

Regex для удаления нескольких заглавных букв и / или чисел, появляющихся вместе:

$draft="The war between the CIA and NSA started in K2 when the FBI hired M";
$newdraft = preg_replace('/[A-Z0-9][A-Z0-9]+/', '', $draft);
echo $newdraft;
0 голосов
/ 23 мая 2011

Попробуйте определить аббревиатуру. Вы должны были бы сократить некоторые углы, но указав что-то вроде «любое отдельное слово, которое меньше, чем 5 символов и во всех заглавных буквах» должно быть правильным для этого примера, и вы сможете написать регулярное выражение для этого.

Кроме этого, вы можете составить огромный список известных сокращений и просто заменить их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...