Как я могу разделить разделенные слова в массив с ключом, являющимся левой частью от разделителя и оценить правую часть

У меня есть такая строка, где каждое слово помечено с помощью кодировки (FW, PRPи т. д.), используя подчеркивание:

Hi_FW !_.
My_PRP$ name_NN 's_POS Jim_NNP ._.
I_PRP 'm_VBP from_IN New_NNP Zealand_NNP ._.
This_DT is_VBZ my_PRP$ friend_NN ._.
His_PRP$ name_NN 's_POS Adam_NNP ._.
He_PRP 's_VBZ from_IN Australia_NNP ._.
This_DT is_VBZ my_PRP$ friend_NN too_RB ._.
Her_PRP$ name_NN 's_POS Paola_NNP ._.
She_PRP 's_VBZ from_IN Italy_NNP ._.

Мне нужно разбить его на массив, где ключом является слово, а его значением является соответствующий ему тег:

[
"Hi" => "FW",
"My" => "PRP$",
"name" => "NN"...
]

Я предполагаю, что могу как-то разбить эту строку разделителем _, но не могу найти хороший способ затем объединить его в массив, который мне нужен.

Как это может быть достигнуто?

-1

Решение

$arr = explode("\n", $string);
$newarr = array();
foreach($arr as $item)
{
$explodeditem = explode(' ', $item);
foreach($explodeditem as $string)
array_push ($newarr, $string);
}
$result = array();
foreach($newarr as $item)
{
$newArr = explode('_', $item);
$result[$newArr[0]] = $newArr[1];
}
1

Другие решения

Предположим, мы читаем из файла (data.txt), а затем читаем содержимое файла, используя Еореп () который может быть опущен, если ваше требование является строкой.

Следующее является частичное наивное решение для реализации намеревался дать вам преимущество. Комментарии для заданных очень простых разделителей и использование нескольких preg_split () (дважды):

<?php

$results = array();
$delimiter = '_';

$file_handle = fopen("data.txt", "r");
while (!feof($file_handle)) {

// ie. My_PRP$ name_NN 's_POS Jim_NNP ._.
$line = fgets($file_handle);

// validations ommited

// split by delimiter '_'
// [0] = My
// [1] = PRP$
$line_array = preg_split("/$delimiter/", $line);

// ie. for cases Hi_FW !_.
// from results above, split by space
// [0] = FW
// [1] = !
$value = preg_split("/\s/", $line_array[1]);

// sighh, adding delimiter back to key-value array
$result[$line_array[0]] = $delimiter.$value[0];
}
fclose($file_handle);

print_r($result);

?>

data.txt

Hi_FW !_.
My_PRP$ name_NN 's_POS Jim_NNP ._.
I_PRP 'm_VBP from_IN New_NNP Zealand_NNP ._.
This_DT is_VBZ my_PRP$ friend_NN ._.
His_PRP$ name_NN 's_POS Adam_NNP ._.
He_PRP 's_VBZ from_IN Australia_NNP ._.
This_DT is_VBZ my_PRP$ friend_NN too_RB ._.
Her_PRP$ name_NN 's_POS Paola_NNP ._.
She_PRP 's_VBZ from_IN Italy_NNP ._.

Надеюсь это поможет.

1

Я бы взорвался на пробелах и чем на _

<?php
$inputArray = explode(" ", $input);

$sentences = array();

foreach ($inputArray as $word){
$wordArray = explode("_", $word);
$sentences[$wordArray[0]] = $wordArray[1];
}
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector