我被导师布置的一个问题卡住了,他要我写一个PHP脚本,读取UTF-8编码的文件内容,并返回每个单词出现的次数作为json。
文件内容的语言为俄语西里尔语。
以下是示例文本
Он бледен. Мыслит страшный путь.
В его душе живут виденья.
Ударом жизни вбита грудь,
А щеки выпили сомненья.
Клоками сбиты волоса,
Чело высокое в морщинах,
Но ясных грез его краса
Горит в продуманных картинах.
Сидит он в тесном чердаке,
Огарок свечки режет взоры,
А карандаш в его руке
Ведет с ним тайно разговоры.
Он пишет песню грустных дум,
Он ловит сердцем тень былого.
И этот шум… душевный шум…
Снесет он завтра за целковый.
根据我的研究,PHP的预定义字符串函数可以无缝地处理这个问题,只有在它必须是ASCII编码的情况下。在这种情况下,我们有一些第三方库或API来处理其他非英语语言的utf-8编码字符串。
2条答案
按热度按时间doinxwow1#
使用mb_string函数:
e37o9pze2#
这个解决方案将文本拆分成一个数组,然后将单词包含在数组中。正则表达式只是一种方法,需要改进。然后使用array_count_values进行求值。
这里区分大小写。
演示:https://3v4l.org/5iVnX
如果仅单词的第一个字母不被区分,或者如果诸如make-up之类的单词被识别为一个单词,则代码变得稍微更广泛。
mb_word_count函数返回一个数组,其中所有单词作为键,它们的数字作为值。str 2 hex这样的人工单词被识别为一个单词。只有单词的第一个字母不区分大小写(MB_CASE_TITLE)。其他模式可以从mb_convert_case中选择。其他字符可以用$字符定义,然后将其作为字母处理。