帮助字符串解析

发布于 2024-11-24 18:03:05 字数 1922 浏览 2 评论 0原文

我有一个巨大的库文件,其中包含一个单词及其同义词,这是我的库格式中的一些单词及其同义词:

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 是一个单词,下面是同义词,我想不出一种方法来获取单词和关联数组上的同义词,这就是我想要做的:

<?
$file = file('library.txt');
$array_sinonimos = array();
foreach($file as $k)
{
    $explode = explode($k, "|");
    if(is_int($explode[1]))
    {
        $word = $explode[0];
    } 
}
?>

什么都没有,哈哈,我在这里能做什么?循环行,直到找到空行,然后尝试使用爆炸?帮助!

I have a huge library file containing a word and it's synonyms, this is some words and their synonyms in the format of my library:

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é

see aantarrão is a word and below it are the synonyms, I can't think of a way to get the word and the synonyms on an associative array, this is what I'm trying to do:

<?
$file = file('library.txt');
$array_sinonimos = array();
foreach($file as $k)
{
    $explode = explode($k, "|");
    if(is_int($explode[1]))
    {
        $word = $explode[0];
    } 
}
?>

nothing, lol, what can I do here ? loop lines until I find an empty line then try to get a new word with the explode ?, help !

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

烈酒灼喉 2024-12-01 18:03:05

这是我编写的一些似乎有效的代码。

请参阅此处的实际代码:http://codepad.org/TVpYgW91

请参阅此处的代码

已更新以逐行阅读

    <?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. 行结尾忽略空行 (count($content))
  4. 在管道上拆分行,如果该行的最后一个值有一个数值,则这成为我们的单词,
  5. 如果没有任何其他陷阱被触及,因为 continue 语句,我们只能到达最后一步,所以如果它只是通过管道分割单词并将它们添加到或创建数组元素。

Here's some code I cooked up that seems to work.

See the code in action here: http://codepad.org/TVpYgW91

See the code here

UPDATED to read line by line

    <?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);

So what's the strategy?

  1. fix up the line endings
  2. run through the file line by line
  3. ignore empty lines (count($content))
  4. split the line up on the pipes, if the line has a numerical value for the last value, then this becomes our word
  5. we only get to the last step if none of the other traps got touched, because of the continue statements, so if it is then just split up the words by the pipe and add them to or create the array element.
夜司空 2024-12-01 18:03:05

试试这个。我不记得 array_merge() 是否适用于 null,但基本思想是 $word 是 assoc 数组的 $key。

<?
$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);
    }
}
?>

Try this. I can't remember if array_merge() will work with a null, but the basic idea is that $word is the $key to the assoc array.

<?
$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);
    }
}
?>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文