如何通过传递单词将文本中的单词描述添加到数组,再添加到数组键?
How to add a description of words from text to an array, to an array key by passing words?
我有一本书,里面有很多这样的单词:
ОБАНДОМ آباندام маљ. обпайкар, нозукан- дом, латифбадан.
FБАФКАН آبافكن муњаррики обафкан, даст- гоњи обпошї.
БАНЉИР انجير آب обе, ки дар он анљири ќоќ
ва хушкро мељӯшонанд ва он хусусияти
табобатї дорад.
ӮББАДАЛ بدل آب муовизаи об, табдили об.
ТББАНД بند آب 1. он ки дар пеши об банд ё
дарѓот месозад. 2. банд, дарѓот.
ОББАР بر آب 1. он ки об мебарад, обкаш, маш- коб. 2. маљ. маъшуќ, ки тавассути њуснаш
обрўи ошиќи худро зери хавфи коҳиш
мегузорад. 3. тех. облўла, лўлаи обрасонї, ќубури обгузар.
ЗББАРДОР آببردار 1. обро ба худ гиранда, он
чи зиёд об талаб мекунад, обталаб; биринљи
оббардор. 2. ниг. обчинак.
ҚББАРДОРЇ آببرداري 1. обкашї, машкобї. 2.
об бардоштани чизе (мас., биринљ).
ҶББАРДОШТА برداشته آب рахнае, ки бо фишор
ё љараёни об ба амал омадааст, оббурда, об- шуста (мас., дар банди об ё замин).
ӢББАРО برا آب љои баромади об, љое, ки об аз
он љорї мешавад.
ЪББАЊО بها آب кит. музди об, пули об.
ӢББО اآب нидо, лањљ. изњори тааљљуб ва афсўс.
РББОЗ باز آب шиновар, ѓаввос, обдон, оббур.
ОББОЗИДОРЇ بازيداري آبоббозї доштан
(мас., кўдакро, беморро ва ѓ.)
ОББОЗЇ آببازي шиноварї, оббурї; оббозї кар- дан ба об даромадан ва шустушў кардан, шино кардан.
СББУР بر آب 1. ниг. оббоз. 2. бахши пеши поя- њои пулу купрукњо муќобили љараёни об, ки
нўгтез буда, мављњои обро таќсим карда, фишори обро бар сутуни пояњо суст мекунад.
ОББУРДА برده آب 1. љои рахна карда хокро
шуста бурдаи об, љои обшустаи дарѓот. 2.
љар, љарї, сой.
ҲББУРЇ بري آب обро бурида гузаштан, шиноварї.
ОБВАРЗ ورز آب обдон, оббоз, шиновар.
ДБВАРЗЇ ورزي آب оббозї, шиноварї.
УБГАЗ آبگز осебдида ва зарардида бар асари
муддати зиёд зери об мондан.
ОБГАРДИШ گردش آب 1. хамгашт (-и дарё). 2.
гирдоб. 3. таѓйири мусбат ва ё манфии таб- дили иќлим ба саломатї; нотобї бар асари
табдили иќлим. 4. кит. тезрафтор, хушраф- тор.
正如你所见,你需要添加到数组键中的所有单词都是用大写字母写的。通过将这些词传递给数组键,我想将这些词的所有描述添加到数组中。我怎样才能通过正则表达式做到这一点?
大致结果如下:
$wordsDescription = array(
"ОБАНДОМ" => "آباندام маљ. обпайкар, нозукан- дом, латифбадан.",
"FБАФКАН" => "آبافكن муњаррики обафкан, даст- гоњи обпошї.",
"БАНЉИР" => "نجير آب обе, ки дар он анљири ќоќ ва хушкро мељӯшонанд ва он хусусияти табобатї дорад.",
"ӮББАДАЛ" => "بدل آب муовизаи об, табдили об.",
"ТББАНД" => "بند آب 1. он ки дар пеши об банд ё дарѓот месозад. 2. банд, дарѓот.",
"ОББАР" => "بر آب 1. он ки об мебарад, обкаш, маш- коб. 2. маљ. маъшуќ, ки тавассути њуснаш обрўи ошиќи худро зери хавфи коҳиш мегузорад. 3. тех. облўла, лўлаи брасонї, ќубури обгузар.",
.................
"ОБГАРДИШ" => "گردش آب 1. хамгашт (-и дарё). 2. гирдоб. 3. таѓйири мусбат ва ё манфии таб- дили иќлим ба саломатї; нотобї бар асари табдили иќлим. 4. кит. тезрафтор, хушраф- тор."
);
如果可能,则使用第二个结果的第二个数组
$wordsTranslate = array(
"ОБАНДОМ" => "آباندام",
"FБАФКАН" => "آبافكن",
....................,
"ОБГАРДИШ" => "گردش آب"
);
您可以捕捉带有
描述的单词
~^(\p{Lu}+)\h+(.*(?:\R(?!\p{Lu}+\h).*)*)~mu
参见regex demo。
详情
^
- 行首(由于 m
修饰符)
(\p{Lu}+)
- 1 个或多个大写 Unicode 字母
\h+
- 1 个或多个水平白色space
(.*(?:\R(?!\p{Lu}+\h).*)*)
- 第 2 组:
.*
- 该行的其余部分
(?:\R(?!\p{Lu}+\h).*)*
- 0 个或多个序列
\R(?!\p{Lu}+\h)
- 换行符序列后没有 1+ 个大写 Unicode 字母和 1 个水平白色space
.*
- 该行的其余部分。
参见PHP demo:
$s = "ОБАНДОМ آباندام маљ. обпайкар, нозукан- дом, латифбадан.\nFБАФКАН آبافكن муњаррики обафкан, даст- гоњи обпошї.\nБАНЉИР انجير آب обе, ки дар он анљири ќоќ\nва хушкро мељӯшонанд ва он хусусияти\nтабобатї дорад.\nӮББАДАЛ بدل آب муовизаи об, табдили об.";
$re = '~^(\p{Lu}+)\h+(.*(?:\R(?!\p{Lu}+\h).*)*)~mu';
preg_match_all($re, $s, $m);
$result = array_combine($m[1], $m[2]);
print_r($result);
输出:
Array
(
[ОБАНДОМ] => آباندام маљ. обпайкар, нозукан- дом, латифбадан.
[FБАФКАН] => آبافكن муњаррики обафкан, даст- гоњи обпошї.
[БАНЉИР] => انجير آب обе, ки дар он анљири ќоќ
ва хушкро мељӯшонанд ва он хусусияти
табобатї дорад.
[ӮББАДАЛ] => بدل آب муовизаи об, табдили об.
)
您可以"shrink"换行符使用
$result = array_combine($m[1], preg_replace('~\s*\R\s*~u', ' ', $m[2]));
参见another PHP demo。 \s*\R\s*
模式匹配任何 0+ whitespaces 后跟强制换行符序列再跟任何 0+ whitespaces,并用常规 space 替换匹配项.
可以通过从描述值中删除所有非阿拉伯字符轻松构建第二个数组:
$second = array_combine($m[1], preg_replace('~\P{Arabic}+~u', '', $m[2]));
print_r($second);
您可以在 PHP 脚本中尝试此正则表达式 \b([Ѐ-ЯҐ-ҲFӮҶӢ]+)(.+?)(?:\n(?=[Ѐ-ЯҐ-ҲFӮҶӢ])|$)
:
$str = "ОБАНДОМ آباندام маљ. обпайкар, нозукан- дом, латифбадан.
FБАФКАН آبافكن муњаррики обафкан, даст- гоњи обпошї.
БАНЉИР انجير آب обе, ки дар он анљири ќоќ
ва хушкро мељӯшонанд ва он хусусияти
табобатї дорад.
ӮББАДАЛ بدل آب муовизаи об, табдили об.";
preg_match_all('/\b([Ѐ-ЯҐ-ҲFӮҶӢ]+)(.+?)(?:\n(?=[Ѐ-ЯҐ-ҲFӮҶӢ])|$)/us',
$str, $matches, PREG_SET_ORDER, 0);
foreach ($matches as $m)
$dict[$m[1]] = $m[2];
var_dump($dict);
我有一本书,里面有很多这样的单词:
ОБАНДОМ آباندام маљ. обпайкар, нозукан- дом, латифбадан. FБАФКАН آبافكن муњаррики обафкан, даст- гоњи обпошї. БАНЉИР انجير آب обе, ки дар он анљири ќоќ ва хушкро мељӯшонанд ва он хусусияти табобатї дорад. ӮББАДАЛ بدل آب муовизаи об, табдили об. ТББАНД بند آب 1. он ки дар пеши об банд ё дарѓот месозад. 2. банд, дарѓот. ОББАР بر آب 1. он ки об мебарад, обкаш, маш- коб. 2. маљ. маъшуќ, ки тавассути њуснаш обрўи ошиќи худро зери хавфи коҳиш мегузорад. 3. тех. облўла, лўлаи обрасонї, ќубури обгузар. ЗББАРДОР آببردار 1. обро ба худ гиранда, он чи зиёд об талаб мекунад, обталаб; биринљи оббардор. 2. ниг. обчинак. ҚББАРДОРЇ آببرداري 1. обкашї, машкобї. 2. об бардоштани чизе (мас., биринљ). ҶББАРДОШТА برداشته آب рахнае, ки бо фишор ё љараёни об ба амал омадааст, оббурда, об- шуста (мас., дар банди об ё замин). ӢББАРО برا آب љои баромади об, љое, ки об аз он љорї мешавад. ЪББАЊО بها آب кит. музди об, пули об. ӢББО اآب нидо, лањљ. изњори тааљљуб ва афсўс. РББОЗ باز آب шиновар, ѓаввос, обдон, оббур. ОББОЗИДОРЇ بازيداري آبоббозї доштан (мас., кўдакро, беморро ва ѓ.) ОББОЗЇ آببازي шиноварї, оббурї; оббозї кар- дан ба об даромадан ва шустушў кардан, шино кардан. СББУР بر آب 1. ниг. оббоз. 2. бахши пеши поя- њои пулу купрукњо муќобили љараёни об, ки нўгтез буда, мављњои обро таќсим карда, фишори обро бар сутуни пояњо суст мекунад. ОББУРДА برده آب 1. љои рахна карда хокро шуста бурдаи об, љои обшустаи дарѓот. 2. љар, љарї, сой. ҲББУРЇ بري آب обро бурида гузаштан, шиноварї. ОБВАРЗ ورز آب обдон, оббоз, шиновар. ДБВАРЗЇ ورزي آب оббозї, шиноварї. УБГАЗ آبگز осебдида ва зарардида бар асари муддати зиёд зери об мондан. ОБГАРДИШ گردش آب 1. хамгашт (-и дарё). 2. гирдоб. 3. таѓйири мусбат ва ё манфии таб- дили иќлим ба саломатї; нотобї бар асари табдили иќлим. 4. кит. тезрафтор, хушраф- тор.
正如你所见,你需要添加到数组键中的所有单词都是用大写字母写的。通过将这些词传递给数组键,我想将这些词的所有描述添加到数组中。我怎样才能通过正则表达式做到这一点?
大致结果如下:
$wordsDescription = array(
"ОБАНДОМ" => "آباندام маљ. обпайкар, нозукан- дом, латифбадан.",
"FБАФКАН" => "آبافكن муњаррики обафкан, даст- гоњи обпошї.",
"БАНЉИР" => "نجير آب обе, ки дар он анљири ќоќ ва хушкро мељӯшонанд ва он хусусияти табобатї дорад.",
"ӮББАДАЛ" => "بدل آب муовизаи об, табдили об.",
"ТББАНД" => "بند آب 1. он ки дар пеши об банд ё дарѓот месозад. 2. банд, дарѓот.",
"ОББАР" => "بر آب 1. он ки об мебарад, обкаш, маш- коб. 2. маљ. маъшуќ, ки тавассути њуснаш обрўи ошиќи худро зери хавфи коҳиш мегузорад. 3. тех. облўла, лўлаи брасонї, ќубури обгузар.",
.................
"ОБГАРДИШ" => "گردش آب 1. хамгашт (-и дарё). 2. гирдоб. 3. таѓйири мусбат ва ё манфии таб- дили иќлим ба саломатї; нотобї бар асари табдили иќлим. 4. кит. тезрафтор, хушраф- тор."
);
如果可能,则使用第二个结果的第二个数组
$wordsTranslate = array(
"ОБАНДОМ" => "آباندام",
"FБАФКАН" => "آبافكن",
....................,
"ОБГАРДИШ" => "گردش آب"
);
您可以捕捉带有
描述的单词~^(\p{Lu}+)\h+(.*(?:\R(?!\p{Lu}+\h).*)*)~mu
参见regex demo。
详情
^
- 行首(由于m
修饰符)(\p{Lu}+)
- 1 个或多个大写 Unicode 字母\h+
- 1 个或多个水平白色space(.*(?:\R(?!\p{Lu}+\h).*)*)
- 第 2 组:.*
- 该行的其余部分(?:\R(?!\p{Lu}+\h).*)*
- 0 个或多个序列\R(?!\p{Lu}+\h)
- 换行符序列后没有 1+ 个大写 Unicode 字母和 1 个水平白色space.*
- 该行的其余部分。
参见PHP demo:
$s = "ОБАНДОМ آباندام маљ. обпайкар, нозукан- дом, латифбадан.\nFБАФКАН آبافكن муњаррики обафкан, даст- гоњи обпошї.\nБАНЉИР انجير آب обе, ки дар он анљири ќоќ\nва хушкро мељӯшонанд ва он хусусияти\nтабобатї дорад.\nӮББАДАЛ بدل آب муовизаи об, табдили об.";
$re = '~^(\p{Lu}+)\h+(.*(?:\R(?!\p{Lu}+\h).*)*)~mu';
preg_match_all($re, $s, $m);
$result = array_combine($m[1], $m[2]);
print_r($result);
输出:
Array
(
[ОБАНДОМ] => آباندام маљ. обпайкар, нозукан- дом, латифбадан.
[FБАФКАН] => آبافكن муњаррики обафкан, даст- гоњи обпошї.
[БАНЉИР] => انجير آب обе, ки дар он анљири ќоќ
ва хушкро мељӯшонанд ва он хусусияти
табобатї дорад.
[ӮББАДАЛ] => بدل آب муовизаи об, табдили об.
)
您可以"shrink"换行符使用
$result = array_combine($m[1], preg_replace('~\s*\R\s*~u', ' ', $m[2]));
参见another PHP demo。 \s*\R\s*
模式匹配任何 0+ whitespaces 后跟强制换行符序列再跟任何 0+ whitespaces,并用常规 space 替换匹配项.
可以通过从描述值中删除所有非阿拉伯字符轻松构建第二个数组:
$second = array_combine($m[1], preg_replace('~\P{Arabic}+~u', '', $m[2]));
print_r($second);
您可以在 PHP 脚本中尝试此正则表达式 \b([Ѐ-ЯҐ-ҲFӮҶӢ]+)(.+?)(?:\n(?=[Ѐ-ЯҐ-ҲFӮҶӢ])|$)
:
$str = "ОБАНДОМ آباندام маљ. обпайкар, нозукан- дом, латифбадан.
FБАФКАН آبافكن муњаррики обафкан, даст- гоњи обпошї.
БАНЉИР انجير آب обе, ки дар он анљири ќоќ
ва хушкро мељӯшонанд ва он хусусияти
табобатї дорад.
ӮББАДАЛ بدل آب муовизаи об, табдили об.";
preg_match_all('/\b([Ѐ-ЯҐ-ҲFӮҶӢ]+)(.+?)(?:\n(?=[Ѐ-ЯҐ-ҲFӮҶӢ])|$)/us',
$str, $matches, PREG_SET_ORDER, 0);
foreach ($matches as $m)
$dict[$m[1]] = $m[2];
var_dump($dict);