从PHP字符串中删除所有首字母缩略词

时间:2011-05-23 14:16:15

标签: php string

我有一行内部有首字母缩略词的文字就像这样......

$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 个答案:

答案 0 :(得分:4)

好的,让我们尝试写一些东西(虽然我无法理解它有用的东西)。

<?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 :(得分:1)

首字母缩略词的定义:任何完全大写的词,至少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;
?>

答案 2 :(得分:0)

尝试定义首字母缩略词。你必须削减一些角落,但是说“任何小于5个字符和所有大写字母的单词”对于这个样本应该是正确的,你可以为它编写一个正则表达式。 / p>

除此之外,您可以制作一个已知首字母缩略词的大量列表,然后替换它们。

答案 3 :(得分:0)

正则表达式删除多个一起出现的上限和/或数字:

$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;