我怎样才能将分隔的单词分隔成一个数组,键是分隔符的左边部分并给右边的部分赋值
How can I delimiter separated words into an array with key being left part from delimiter and value the right part
我有一个这样的字符串,其中每个单词都使用下划线标记编码(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 ._.
我需要把它分解成一个数组,key是一个单词,它的值是它对应的标签:
[
"Hi" => "FW",
"My" => "PRP$",
"name" => "NN"
...
]
我想我可以用定界符 _
以某种方式拆分这个字符串,但似乎找不到一个好方法将它加入我需要的数组中。
如何实现?
我会在空格上展开,而不是在 _
上展开
<?php
$inputArray = explode(" ", $input);
$sentences = array();
foreach ($inputArray as $word){
$wordArray = explode("_", $word);
$sentences[$wordArray[0]] = $wordArray[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];
}
假设我们正在从文件 (data.txt) 中读取,然后下面使用 fopen() 读取文件的内容,如果您的要求是字符串,则可以省略。
以下是部分天真的实现解决方案,旨在让您抢先一步。给定非常简单的分隔符和使用多个 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 ._.
希望对您有所帮助。
我有一个这样的字符串,其中每个单词都使用下划线标记编码(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 ._.
我需要把它分解成一个数组,key是一个单词,它的值是它对应的标签:
[
"Hi" => "FW",
"My" => "PRP$",
"name" => "NN"
...
]
我想我可以用定界符 _
以某种方式拆分这个字符串,但似乎找不到一个好方法将它加入我需要的数组中。
如何实现?
我会在空格上展开,而不是在 _
<?php
$inputArray = explode(" ", $input);
$sentences = array();
foreach ($inputArray as $word){
$wordArray = explode("_", $word);
$sentences[$wordArray[0]] = $wordArray[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];
}
假设我们正在从文件 (data.txt) 中读取,然后下面使用 fopen() 读取文件的内容,如果您的要求是字符串,则可以省略。
以下是部分天真的实现解决方案,旨在让您抢先一步。给定非常简单的分隔符和使用多个 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 ._.
希望对您有所帮助。