Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP音译_Php_Transliteration - Fatal编程技术网

PHP音译

PHP音译,php,transliteration,Php,Transliteration,是否有任何解决方案可以将所有外来字符转换为A-z等效字符?我在谷歌上搜索了很多次,但都找不到解决方案,甚至找不到字符和等价物的列表。原因是我想只显示A-z URL,在处理这些字符时还要显示大量其他错误。查询的问题是这是一件非常困难的事情。在大多数语言中,并非所有的字形都有a-z对应,所有字形都有语音对应(但这些是单词而不是字母),如果你只是在处理基于拉丁语的语言,那么事情就容易一点,但你仍然会遇到诸如I-变异之类的问题 你最好的解决办法是列出一个简略的拼音列表->a-z等同音词,它不是完美的,但

是否有任何解决方案可以将所有外来字符转换为A-z等效字符?我在谷歌上搜索了很多次,但都找不到解决方案,甚至找不到字符和等价物的列表。原因是我想只显示A-z URL,在处理这些字符时还要显示大量其他错误。

查询的问题是这是一件非常困难的事情。在大多数语言中,并非所有的字形都有a-z对应,所有字形都有语音对应(但这些是单词而不是字母),如果你只是在处理基于拉丁语的语言,那么事情就容易一点,但你仍然会遇到诸如I-变异之类的问题

你最好的解决办法是列出一个简略的拼音列表->a-z等同音词,它不是完美的,但如果没有更多关于你确切要求的信息,就很难制定出解决方案。

你可以使用,它有一个特殊的音译编码

当字符串“//translatit”附加到tocode后,音译被激活。这意味着,当一个字符不能在目标字符集中表示时,可以通过一个或多个看起来与原始字符相似的字符来近似表示

--


获取与您的用例匹配的完整示例。

如果您使用的是iconv,请在尝试音译之前确保您的区域设置正确,否则某些字符将无法正确音译

setlocale(LC_CTYPE, 'en_US.UTF8');

注意:我从另一个类似的问题转载了这个问题,希望对其他人有所帮助

我最终基于Django项目中的URLify.js编写了一个PHP库,因为我发现iconv()太不完整了。你可以在这里找到它:


处理拉丁字符以及希腊语、土耳其语、俄语、乌克兰语、捷克语、波兰语和拉脱维亚语。

如果您的开发和发布环境不支持PHP 5.4或更新版本,您应该使用或自定义音译库

就iconv而言,我发现它毫无用处,尤其是在阿拉伯语或西里尔字母表上使用它。我会选择PHP5.4内置的音译类或自定义的音译类

发布的一个解决方案提到了一个我没有测试过的问题

当我使用Drupal时,我喜欢他们的,我最近移植了它,使它在没有Drupal的情况下可用


您可以下载它并按如下方式使用:
这将尽可能多地将外来字符(包括西里尔文、中文、阿拉伯文等)转换为它们的A-z等效字符:

$AzString = transliterator_transliterate('Any-Latin;Latin-ASCII;', $foreignString);

您可能首先需要PHP Intl扩展。

对于编写器高手来说,有slugify

尼斯图书馆位于:

1) (然而,许多语言缺少一些语言)

2) (仅限俄语和乌克兰语)

试试这个

function Unaccent( $string ) {

$transliterator = Transliterator::createFromRules(':: NFD; :: [:Nonspacing Mark:] Remove; :: NFC;', Transliterator::FORWARD);

$normalized = $transliterator->transliterate($string);

return $normalized;

}

我正在处理欧洲语言,一个粗略的解决方案会很好,我曾经在另一个脚本的源代码中找到一个大列表,但已经完全丢失了。正如所指出的,一个基于拉丁字母的粗略转换列表就足够了。现在在最新版本的PHP(PHP5.4)()中添加了一个音译类在我继续研究的过程中,我刚刚偶然发现了iconv,非常感谢您将我与完整的示例联系起来。谢谢。你应该结合Shane O'Grady的回答。你不应该在这项工作中使用iconv。在不同的系统上可以有不同的iconv库,所以结果不能保证(更准确地说,是保证的,结果会不同),所以要注意这一点!是的,这很有帮助。谢谢+我发现这非常有用,但您有一个注意事项:
注意事项:尝试在第207行的/path/jtranscription.php中获取非对象的属性。我已根据自己的具体需要解决了此问题;)我的修复方法是删除第206行,并将第207行替换为
$langcode=“UTF-8”!这是另一个更为最新的端口:它可以使用composer.Command for Debian(Ubuntu)安装:
sudo aptitude install php5 intl
。在这里你可以找到。
$AzString = transliterator_transliterate('Any-Latin;Latin-ASCII;', $foreignString);
use Cocur\Slugify\Slugify;
$slugify = new Slugify();
echo $slugify->slugify('Hello World!'); // hello-world

//You can also change the separator used by Slugify:
echo $slugify->slugify('Hello World!', '_'); // hello_world

//The library also contains Cocur\Slugify\SlugifyInterface. Use this interface whenever you need to type hint an instance of Slugify.
//To add additional transliteration rules you can use the addRule() method.
$slugify->addRule('i', 'ey');
echo $slugify->slugify('Hi'); // hey
function Unaccent( $string ) {

$transliterator = Transliterator::createFromRules(':: NFD; :: [:Nonspacing Mark:] Remove; :: NFC;', Transliterator::FORWARD);

$normalized = $transliterator->transliterate($string);

return $normalized;

}