首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >帮助解析字符串

帮助解析字符串
EN

Stack Overflow用户
提问于 2011-07-19 13:58:49
回答 2查看 106关注 0票数 1

我有一个巨大的库文件,包含一个单词和它的同义词,这是一些单词和它们的同义词,格式是我的库:

代码语言:javascript
复制
aantarrão|1
igrejeiro|igrejeiro|aantarrão|beato

aãsolar|1
desolar|desolar|aãsolar|afligir|arrasar|arruinar|consternar|despovoar|devastar|magoar

aba|11
amparo|amparo|aba|abrigo|achego|acostamento|adminículo|agasalho|ajuda|anteparo|apadrinhamento|apoio|arrimo|asilo|assistência|auxíjlio|auxílio|baluarte|bordão|broquel|coluna|conchego|defesa|égide|encosto|escora|esteio|favor|fulcro|muro|patrocínio|proteção|proteçâo|resguardo|socorro|sustentáculo|tutela|tutoria
apoio|apoio|aba|adesão|adminículo|amparo|aprovação|arrimo|assentimento|base|bordão|coluna|conchego|descanso|eixo|encosto|escora|espeque|fé|fulcro|proteçâo|proteção|refúgio|socorro|sustentáculo
beira|beira|aba|beirada|borda|bordo|cairel|encosta|extremidade|falda|iminência|margem|orla|ourela|proximidade|rai|riba|sopé|vertente
beirada|beirada|aba|beira|encosta|falda|margem|sopé|vertente
encosta|encosta|aba|beira|beirada|clivo|falda|lomba|sopé|subida|vertente
falda|falda|aba|beira|beirada|encosta|fralda|sopé|vertente
fralda|fralda|aba|falda|raiss|raiz|sopé
prestígio|prestígio|aba|auréola|autoridade|domínio|força|halo|importância|influência|preponderância|valia|valimento|valor
proteção|proteção|aba|abrigo|agasalho|ajuda|amparo|apoio|arrimo|asilo|auspiciar|auxílio|bafejo|capa|custódia|defesa|égide|escora|fautoria|favor|fomento|garantia|paládio|patrocínio|pistolão|quartel|refúgio|socorro|tutela|tutoria
sopé|sopé|aba|base|beira|beirada|encosta|falda|fralda|raiz|vertente
vertente|vertente|aba|beira|beirada|declive|encosta|falda|sopé

看,aantarrão是一个单词,它下面是同义词,我想不出一种方法来将单词和同义词放在一个关联数组中,这就是我想要做的:

代码语言:javascript
复制
<?
$file = file('library.txt');
$array_sinonimos = array();
foreach($file as $k)
{
    $explode = explode($k, "|");
    if(is_int($explode[1]))
    {
        $word = $explode[0];
    } 
}
?>

没什么,哈哈,我能做些什么呢?循环各行,直到我找到一个空行,然后尝试使用explode ?,help获取一个新词!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-19 14:13:53

以下是我编写的一些代码,它们似乎可以正常工作。

在这里查看实际的代码:http://codepad.org/TVpYgW91

请看这里的代码

已更新以逐行读取

代码语言:javascript
复制
    <?php 
    $filepointer = fopen("library.txt", "rb");
 $words = array();

 while(!feof($filepointer)) {
        $line = trim(fgets($filepointer));
        $content = explode("|", $line);
        if (count($content) == 0)
        continue;
        if (is_numeric(end($content))) {
        $word = reset($content);
        continue;
        }

        if (isset($words[$word]))
        $words[$word] = array_merge($words[$word], $content);
        else
        $words[$word] = $content;
    }

    print_r($words);

那么策略是什么呢?

  1. 修复通过文件逐行运行的行尾
  2. 忽略空行在管道上排列,如果该行的最后一个值有一个数值,则这将成为我们的
  3. 如果没有其他陷阱被触及,我们只能到达最后一步,因为使用了continue语句,所以如果它是通过管道拆分单词,并将它们添加到或创建数组元素。

<代码>G216

票数 2
EN

Stack Overflow用户

发布于 2011-07-19 14:09:13

尝尝这个。我不记得array_merge()是否可以处理空值,但基本思想是$word是assoc数组的$key。

代码语言:javascript
复制
<?
$file = file('library.txt');
$array_sinonimos = array();
foreach($file as $k)
{
    $explode = explode($k, "|");
    if(is_int($explode[1]))
    {
        $word = $explode[0];
    }
    else if(!empty($explode))
    {
        $array_sinonimos[$word] = array_merge($synonyms[$word], $explode);
    }
}
?>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6742872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档