私はこのコードを使用します:
<script type="text/javascript">
function transfer(which) {
which = which.replace(/[\-]+/g,'-'); // to remove extra hypens
which = which.replace( 'č', 'c' );
which = which.replace( 'ē', 'e' );
which = which.replace( 'ģ', 'g' );
which = which.replace( 'ī', 'i' );
which = which.replace( 'ķ', 'k' );
which = which.replace( 'ļ', 'l' );
which = which.replace( 'ņ', 'n' );
which = which.replace( 'ū', 'u' );
which = which.replace( 'ž', 'z' );
which = which.replace( 'š', 's' );
which = which.replace( 'ā', 'a' );
which = which.replace(/\s/g,'-'); // to replace spaces with hypens
which = which.replace(/[\-]+/g,'-'); // to remove extra hypens
which = which.replace(/[^a-zA-Z0-9\-]/g,'').toLowerCase(); // to convert to lower case
document.getElementById("url_slug").value = which;
}
</script>
ご覧のとおり、現在多くの変更された文字がありますが、すべてのロシア語の文字もラテン語に変更する必要があります。そのようにすると、非常に長いコードになります。だから私の質問は:Javascript転送置換関数で1行に1文字ではなく多くの文字を置き換えることは可能ですか?PHPのようなもの
$cyr = array('а','б','в','г','д','e','ж','з','и','й','к','л','м','н','о','п','р','с','т','у',
'ф','х','ц','ч','ш','щ','ъ','ь', 'ю','я','А','Б','В','Г','Д','Е','Ж','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У',
'Ф','Х','Ц','Ч','Ш','Щ','Ъ','Ь', 'Ю','Я' );
$lat = array( 'a','b','v','g','d','e','zh','z','i','y','k','l','m','n','o','p','r','s','t','u',
'f' ,'h' ,'ts' ,'ch','sh' ,'sht' ,'a' ,'y' ,'yu' ,'ya','A','B','V','G','D','E','Zh',
'Z','I','Y','K','L','M','N','O','P','R','S','T','U',
'F' ,'H' ,'Ts' ,'Ch','Sh' ,'Sht' ,'A' ,'Y' ,'Yu' ,'Ya' );
$textcyr = str_replace($cyr, $lat, $textcyr);