如果我为语音合成器喂食(在这种情况下为节日,但它适用于所有文本):

“在美国的USPGA锦标赛上,英国广播公司的记者参加了MIA”。它上写着“在美国的USPGA锦标赛上,英国广播公司的记者去了MIA”。

换句话说,我想,由于它是一组辅音,因此它正确地读出“ BBC”,但用其他辅音读出“单词”。

我想最简单的事情是通过一个查找2个或更多大写字母的PHP脚本运行它,然后简单地将单词“爆炸”到空间中,例如USPG A。

我意识到这会导致“我告诉他不要那样做”之类的事情,但在新闻报道中往往会少发生。

这是事;我可以“爆炸”一个单词,问题是,我是那些尝试了数月尝试的人之一,但他们无法使自己的头部围绕某些方面的某些方面。在这种情况下,它正在寻找:两个或更多字母在首都彼此相邻。

我给上述所有预示出的原因是,如果有一种更好的方法,我没有找到或通过 - 也许是单词或其他东西的缩写症。

有帮助吗?

解决方案

使用preg_replace_callback()使用Delan的正则表达式,使在已确定的首字母的所有字母之间放置一个空间非常容易

$input = "At the USPGA championship in the US, the BBC reporter went MIA";

function cb_separateCapitals($matches) {
    return implode(' ',str_split($matches[0]));
}


echo $input,'<br />';

$output = preg_replace_callback('/\b([A-Z]{2,})\b/','cb_separateCapitals',$input);

echo $output;

给予

在美国的USPGA锦标赛上,英国广播公司的记者去了MIA

在美国的USPGA锦标赛上,英国广播公司的记者去了MIA

其他提示

匹配首字母缩略词的模式:

/\b([A-Z]{2,})\b/

这与两个或两个或两个或两个或更多的首都相匹配。

您可以使用一个 lookahead断言

$input = "At the USPGA championship in the US, the BBC reporter went MIA";
echo preg_replace('~[A-Z](?=[A-Z])~', '$0 ', $input);

[A-Z](?=[A-Z]) 说“每一次资本都有资本”

"[A-Z][A-Z]" 将匹配两个大写字母的任何实例。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top