Annotation of embedaddon/php/ext/mbstring/README_PHP3-i18n-ja, revision 1.1

1.1     ! misho       1: ==========================================
        !             2:   README for I18N Package
        !             3: ==========================================
        !             4: 
        !             5: o Name and location of package
        !             6: 
        !             7: Name:           php-3.0.18-i18n-ja-2
        !             8: Location:       http://www.happysize.co.jp/techie/php-ja-jp/
        !             9:                 ftp://ftp.happysize.co.jp/php-ja-jp/
        !            10:                 http://php.vdomains.org/
        !            11:                 ftp://ftp.vdomains.org/pub/php-ja-jp/
        !            12:                 http://php.jpnnet.com/
        !            13: 
        !            14: Currently, this I18N version of PHP only adds Japanese support to base
        !            15: PHP.  It allows you to use Japanese in scripts, as well as conversion
        !            16: between various Japanese encodings.  It will work perfectly fine with 
        !            17: ASCII with i18n option enabled.  (note: executable is bit larger due 
        !            18: to UNICODE table).  The basic design aproach is to allow for other 
        !            19: languages to be added in the future.  Developers are encourage to join
        !            20: us!
        !            21: 
        !            22: For more information on Japanese encodings, please refer to the 
        !            23: section "Additional Notes."
        !            24: 
        !            25: 
        !            26: o What is this package?
        !            27: 
        !            28: This package allows you to handle multiple Japanese encodings (SJIS, EUC,
        !            29: UTF-8, JIS) in PHP.  If you find any bugs in this package, please report
        !            30: them to the appropriate mailing list.  For now, the PHP-jp mailing list 
        !            31: is the best place for this.
        !            32: 
        !            33: PHP-jp ML       mailto:PHP-jp@sidecar.ics.es.osaka-u.ac.jp
        !            34:                 http://sidecar.ics.es.osaka-u.ac.jp/php-jp/
        !            35:                 (discussions are in Japanese)
        !            36: 
        !            37: 
        !            38: o Who should use this
        !            39: 
        !            40: Due to lack of documentation, it's not intended for beginners.  If
        !            41: something goes wrong, be prepared to fix it on your own.
        !            42: 
        !            43: 
        !            44: o Warranty and Copyright
        !            45: 
        !            46: There is no warranty with this package.  Use it at your own risk.
        !            47: 
        !            48: Please refer to the source code for the copyrights.  In general, each
        !            49: program's copyright is owned by the programmer.  Unless you obey the
        !            50: copyright holders restrictions, you are not allowed to use it in any
        !            51: form.
        !            52: 
        !            53: 
        !            54: o Redistribution
        !            55: 
        !            56: As described in the source code, this package and the components are
        !            57: allowed to be redistributed with certain restrictions.
        !            58: 
        !            59: Due to this package being still in beta, please try to redistribute
        !            60: it as an entire package.  Please try not to distribute it as a form
        !            61: of patch.  Because we would prefer to have this package distributed
        !            62: as one single package (not patch of patch of patch), avoid releasing
        !            63: any patch to this package.
        !            64: 
        !            65: 
        !            66: o Who made this
        !            67: 
        !            68: A team of volunteers, PHP3 Internationalization, has been contributing
        !            69: their free time producing it.  Although we are not related to the core
        !            70: PHP programmers, we are hoping to have our modifications merged into the
        !            71: core distribution in the near future.  Thus, we did not call this a
        !            72: "Japanese Patch" (or distribution).  Our final goal is to have true
        !            73: i18nized PHP!
        !            74: 
        !            75: For anyone interested in this project, please drop us a line.
        !            76: 
        !            77: Contact Address:
        !            78:         phpj-dev@kage.net
        !            79:         (Discussions are in Japanese, but feel free to write us in English)
        !            80: 
        !            81: Webpage (English and Japanese):
        !            82:         http://php.jpnnet.com/
        !            83: 
        !            84: Project Outline (Japanese):
        !            85:         http://www.happysize.co.jp/techie/php-ja-jp/spec.htm
        !            86: 
        !            87: Developers:
        !            88:         Hironori Sato <satoh@jpnnet.com>
        !            89:         Shigeru Kanemoto <sgk@happysize.co.jp>
        !            90:         Tsukada Takuya <tsukada@fminn.nagano.nagano.jp>
        !            91:         U. Kenkichi <kenkichi@axes.co.jp>
        !            92:         Tateyama  <tateyan@amy.hi-ho.ne.jp>
        !            93:         Other gracious contributors
        !            94: 
        !            95: 
        !            96: o Future plans
        !            97: 
        !            98: - fulfilling what's written in outline
        !            99: - support for other languages other than Japanese
        !           100: - make the character conversion as a library (?)
        !           101: - more testing
        !           102: 
        !           103: 
        !           104: o Special Thanks to
        !           105: 
        !           106: PHP Japanese webpage maintainer, Hirokawa-san
        !           107:         http://www.cityfujisawa.ne.jp/%7Elouis/apps/phpfi/
        !           108: PHP-JP ML's Yamamoto-san
        !           109:         http://sidecar.ics.es.osaka-u.ac.jp/php-jp/
        !           110: Previous jp-patch developers
        !           111: 
        !           112: 
        !           113: 
        !           114: ==========================================
        !           115:   Advantages of using I18N package
        !           116: ==========================================
        !           117: 
        !           118: - allows you to use various character encodings for script files and 
        !           119:   http output
        !           120: - distinguish character encoding in POST/GET/COOKIE
        !           121: - proper mail output using JIS as body and MIME/Base64/JIS subject
        !           122: - if http output's Content-Type is text/html, it will set proper charset
        !           123: - stable character encoding conversion
        !           124: - multibyte regex
        !           125: 
        !           126: 
        !           127: 
        !           128: ==========================================
        !           129:   Installation
        !           130: ==========================================
        !           131: 
        !           132: o Summary
        !           133: 
        !           134: Add --enable-i18n option when running configure.  For your own setup,
        !           135: add any other appropriate options as well.
        !           136: 
        !           137: Don't forget to copy php3.ini-dist to desired location.
        !           138: (ex. /usr/local/lib/php3.ini)
        !           139: 
        !           140: If you have already installed PHP3, copy all the entries in php3.ini-dist
        !           141: which start with "i18n.xxxx" to php3.ini.
        !           142: 
        !           143: 
        !           144: o configure option
        !           145:     --enable-i18n
        !           146:       include i18n features
        !           147: 
        !           148:     --enable-mbregex
        !           149:       include multibyte regex library
        !           150:       (without i18n enabled, mbregex functions will not function)
        !           151: 
        !           152: 
        !           153: o creating cgi version
        !           154: 
        !           155:     % tar xvzf php-3.0.18-i18n-ja-2.tar.gz
        !           156:     % cd php-3.0.18-i18n-ja-2
        !           157:     % ./configure --enable-i18n --enable-mbregex
        !           158:     % make
        !           159: 
        !           160: 
        !           161: o creating Apache version (regular module)
        !           162: 
        !           163:     % tar xvzf php-3.0.18-i18n-ja-2.tar.gz
        !           164:     % tar xvzf apache_1.3.x.tar.gz
        !           165:     % cd apache_1.3.x
        !           166:     % ./configure
        !           167:     % cd ../php-3.0.18-i18n-ja-2
        !           168:     % ./configure --with-apache=../apache_1.3.x --enable-i18n --enable-mbregex
        !           169:     % make
        !           170:     % make install
        !           171:     % cd ../apache_1.3.x
        !           172:     % ./configure --activate-module=src/modules/php3/libphp3.a
        !           173:     % make
        !           174:     % make install
        !           175: 
        !           176: 
        !           177: o creating Apache DSO version
        !           178: 
        !           179:     create DSO capable Apache first
        !           180:     % tar xvzf apache_1.3.x.tar.gz
        !           181:     % cd apache-1.3.x
        !           182:     % ./configure --enable-shared=max
        !           183:     % make
        !           184:     % make install
        !           185: 
        !           186:     now create php3
        !           187:     % cd php-3.0.18-i18n-ja-2
        !           188:     % ./configure --with-apxs=/usr/local/apache/bin/apxs --enable-i18n \
        !           189:         --enable-mbregex
        !           190:     % make
        !           191:     % make install
        !           192: 
        !           193: 
        !           194: ==========================================
        !           195:   Additional Notes
        !           196: ==========================================
        !           197: 
        !           198: o Multibyte regex library
        !           199: 
        !           200: From beta4, we have included the multibyte (mb) regex library which comes with
        !           201: Ruby.  With this addition, you can now use regex in EUC, SJIS and UTF-8
        !           202: encoding.  To avoid any conflicts with HSREGEX included with Apache,
        !           203: each function name has been changed.  Therefore, mb regex functions are
        !           204: named differently from the original ereg functions in PHP.  The character
        !           205: encoding used in mb regex is configured in i18n.internal_encoding.
        !           206: 
        !           207: 
        !           208: o Binary Output
        !           209: 
        !           210: If http output encoding is set to other than 'pass', conversion of encoding
        !           211: from internal encoding to http output is done automatically.  Thus,
        !           212: if you prefer to spit out anything in raw binary format, your data
        !           213: may be corrupted.  In such event, set http_output to 'pass'.
        !           214: 
        !           215: ex.
        !           216:         <?
        !           217:             i18n_http_output("pass");
        !           218:             ...
        !           219:             echo $the_binary_data_string;
        !           220:         ?>
        !           221: 
        !           222: 
        !           223: o Content-Type
        !           224: 
        !           225: Depending on the setting of http_output, PHP will output the proper charset.
        !           226: ex. Content-Type: text/html; charset="..."
        !           227: 
        !           228: Be aware of following:
        !           229: 
        !           230: - If you set Content-Type header using header() function, that will
        !           231:   override the automatic addition of charset.
        !           232: - Be cautious when you set i18n_http_output, since if any output is
        !           233:   made prior to this, proper header may have been sent out to the
        !           234:   client already.
        !           235: 
        !           236: 
        !           237: o In the event of trouble
        !           238: 
        !           239: If you find any bugs or trouble, please contact us at the above address.
        !           240: It may help us to track the problem if you send us the script as well.
        !           241: 
        !           242: If you encounter any memory related error such as segmentation violation,
        !           243: add --enable-debug when you run configure.  This will give you more
        !           244: detail information on where error has occurred.  The error is stored
        !           245: in the server log or regular http output in CGI mode.
        !           246: 
        !           247: 
        !           248: o About Japanese encodings
        !           249: 
        !           250: Due to historical reason, there are multiple character encodings used
        !           251: for Japanese.  The most common encodings are: SJIS, EUC, JIS, and UTF-8.  
        !           252: Here are (very) brief description of them:
        !           253: 
        !           254: EUC
        !           255:   commonly used in UNIX environment
        !           256:   8bit-8bit combo
        !           257:   always >=0x80
        !           258: 
        !           259: SJIS
        !           260:   commonly used in Mac or PCs
        !           261:   similar to EUC
        !           262:   mostly 8bit-8bit (some 8bit-7bit)
        !           263:   mostly >=0x80
        !           264:   there are some halfwidth (size of ASCII) multibytes
        !           265: 
        !           266: JIS
        !           267:   commonly used in 7bit environment (nntp and smtp)
        !           268:   starts with escaping char, \033 and a few more characters
        !           269: 
        !           270: UTF-8
        !           271:   16bit+ encoding
        !           272:   defines many languages existing in this world
        !           273:   see http://www.unicode.org/ for more detail
        !           274: 
        !           275: Because of having all these character encodings, PHP needs to translate
        !           276: between these encodings on the fly.  Also, the addition of the mb regex 
        !           277: library allows you to handle mb strings without fear of getting mb char 
        !           278: chopped in half.
        !           279: 
        !           280: Since Japanese is not the only language with multiple encodings, we
        !           281: encourage other developers to modify our code to suit your needs.  We
        !           282: definitely need people to work with Korean, Chinese (both traditional
        !           283: and simplified), and Russian.  Let us know if you are interested in
        !           284: this project!
        !           285: 
        !           286: 
        !           287: 
        !           288: ==========================================
        !           289:   php3.ini setting
        !           290: ==========================================
        !           291: 
        !           292: The following init options will allow you to change the default settings.
        !           293: Define these settings in the global section of php3.ini.
        !           294: 
        !           295: All keywords are case-insensitive.
        !           296: 
        !           297: o Encoding naming
        !           298: 
        !           299:     For each encoding, there are three names: standarized, alias, MIME
        !           300: 
        !           301:     - UTF-8
        !           302:          standard: UTF-8
        !           303:          alias: N/A 
        !           304:          mime: UTF-8
        !           305: 
        !           306:     - ASCII
        !           307:          standard: ASCII
        !           308:          alias: N/A
        !           309:          mime: US-ASCII
        !           310: 
        !           311:     - Japanese EUC
        !           312:          standard: EUC-JP
        !           313:          alias: EUC, EUC_JP, eucJP, x-euc-jp
        !           314:          mime: EUC-JP
        !           315: 
        !           316:     - Shift JIS
        !           317:          standard: SJIS
        !           318:          alias: x-sjis, MS_Kanji
        !           319:          mime: Shift_JIS
        !           320: 
        !           321:     - JIS
        !           322:          standard: JIS
        !           323:          alias: N/A 
        !           324:          mime: ISO-2022-JP
        !           325: 
        !           326:     - Quoted-Printable
        !           327:          standard: Quoted-Printable
        !           328:          alias: qprint
        !           329:          mime: N/A
        !           330: 
        !           331:     - BASE64
        !           332:          standard: BASE64
        !           333:          alias: N/A
        !           334:          mime: N/A
        !           335: 
        !           336:     - no conversion
        !           337:          standard: pass
        !           338:          alias: none
        !           339:          mime: N/A
        !           340: 
        !           341:     - auto encoding detection
        !           342:          standard: auto
        !           343:          alias: unknown
        !           344:          mime: N/A
        !           345: 
        !           346:     * N/A - Not Applicapable
        !           347: 
        !           348: o i18n.http_output - default http output encoding
        !           349: 
        !           350:     i18n.http_output = EUC-JP|SJIS|JIS|UTF-8|pass
        !           351:         EUC-JP : EUC
        !           352:         SJIS: SJIS
        !           353:         JIS : JIS
        !           354:         UTF-8: UTF-8
        !           355:         pass: no conversion
        !           356: 
        !           357:     The default is pass (internal encoding is used)
        !           358:     It can be re-configured on the fly using i18n_http_output().
        !           359: 
        !           360: 
        !           361: o i18n.internal_encoding - internal encoding
        !           362: 
        !           363:     i18n.internal_encoding = EUC-JP|SJIS|UTF-8
        !           364:         EUC-JP : EUC
        !           365:         SJIS: SJIS
        !           366:         UTF-8: UTF-8
        !           367: 
        !           368:     The default is EUC-JP.  
        !           369: 
        !           370:     PHP parser is designed based on using ISO-8859-1.  For other
        !           371:     encodings, following conditions have to be satisfied in order
        !           372:     to use them:
        !           373:        - per byte encoding
        !           374:        - single byte charactor in range of 00h-7fh which is compatible 
        !           375:          with ASCII
        !           376:        - multibyte without 00h-7fh
        !           377:     In case of Japanese, EUC-JP and UTF-8 are the only encoding that
        !           378:     meets this criteria.
        !           379: 
        !           380:     If i18n.internal_encoding and i18n.http_output differs, conversion
        !           381:     takes place at the time of output.  If you convert any data within
        !           382:     PHP scripts to URL encoding, BASE64 or Quoted-Printable, encoding
        !           383:     stays as defined in i18n.internal_encoding.  Thus, if you would
        !           384:     prefer to encode in compliance with i18n.http_output, you need
        !           385:     to manually convert encoding.
        !           386: 
        !           387:     ex. $str = urlencode( i18n_convert($str, i18n_http_output()) );
        !           388: 
        !           389:     Encoding such as ISO-2022-** and HZ encoding which uses escape
        !           390:     sequences can not be used as internal encoding.  If used, they
        !           391:     result in following errors:
        !           392:        - parser pukes funky error
        !           393:        - magic_quotes_*** breaks encoding (SJIS may have similar problem)
        !           394:        - string manipulation and regex will malfunction
        !           395: 
        !           396: 
        !           397: o i18n.script_encoding - script encoding
        !           398: 
        !           399:     i18n.script_encoding = auto|EUC-JP|SJIS|JIS|UTF-8
        !           400:         auto: automatic
        !           401:         EUC-JP : EUC
        !           402:         SJIS: SJIS
        !           403:         JIS : JIS
        !           404:         UTF-8: UTF-8
        !           405: 
        !           406:     The default is auto.
        !           407:     The script's encoding is converted to i18n.internal_encoding before
        !           408:     entering the script parser.
        !           409: 
        !           410:     Be aware that auto detection may fail under some conditions.
        !           411:     For best auto detection, add multibyte charactor at begining of
        !           412:     script.
        !           413: 
        !           414: 
        !           415: o i18n.http_input - handling of http input (GET/POST/COOKIE)
        !           416: 
        !           417:     i18n.http_input = pass|auto
        !           418:         auto: auto conversion
        !           419:         pass: no conversion
        !           420: 
        !           421:     The default is auto.
        !           422:     If set to pass, no conversion will take place.
        !           423:     If set to auto, it will automatically detect the encoding.  If
        !           424:     detection is successful, it will convert to the proper internal
        !           425:     encoding.  If not, it will assume the input as defined in
        !           426:     i18n.http_input_default.
        !           427: 
        !           428: o i18n.http_input_default - default http input encoding
        !           429: 
        !           430:     i18n.http_input_default = pass|EUC-JP|SJIS|JIS|UTF-8
        !           431:         pass: no conversion
        !           432:         EUC-JP : EUC
        !           433:         SJIS: SJIS
        !           434:         JIS : JIS
        !           435:         UTF-8: UTF-8
        !           436: 
        !           437:     The default is pass.
        !           438:     This option is only effective as long as i18n.http_input is set to
        !           439:     auto.  If the auto detection fails, this encoding is used as an
        !           440:     assumption to convert the http input to the internal encoding.
        !           441:     If set to pass, no conversion will take place.
        !           442: 
        !           443: o sample settings
        !           444: 
        !           445:     1) For most flexibility, we recommend using following example.
        !           446:          i18n.http_output = SJIS
        !           447:          i18n.internal_encoding = EUC-JP
        !           448:          i18n.script_encoding = auto
        !           449:          i18n.http_input = auto
        !           450:          i18n.http_input_default = SJIS
        !           451: 
        !           452:     2) To avoid unexpected encoding problems, try these:
        !           453: 
        !           454:          i18n.http_output = pass
        !           455:          i18n.internal_encoding = EUC-JP
        !           456:          i18n.script_encoding = pass
        !           457:          i18n.http_input = pass
        !           458:          i18n.http_input_default = pass
        !           459: 
        !           460: 
        !           461: 
        !           462: ==========================================
        !           463:   PHP functions
        !           464: ==========================================
        !           465: 
        !           466: The following describes the additional PHP functions.
        !           467: 
        !           468: All keywords are case-insensitive.
        !           469: 
        !           470: o i18n_http_output(encoding)
        !           471: o encoding = i18n_http_output()
        !           472: 
        !           473:     This will set the http output encoding.  Any output following this
        !           474:     function will be controlled by this function.  If no argument is given,
        !           475:     the current http output encode setting is returned.
        !           476: 
        !           477:     encodings
        !           478:         EUC-JP : EUC
        !           479:         SJIS: SJIS
        !           480:         JIS : JIS
        !           481:         UTF-8: UTF-8
        !           482:         pass: no conversion
        !           483: 
        !           484:     NONE is not allowed
        !           485: 
        !           486: 
        !           487: o encoding = i18n_internal_encoding()
        !           488: 
        !           489:     Returns the current internal encoding as a string.
        !           490: 
        !           491:     internal encoding
        !           492:         EUC-JP : EUC
        !           493:         SJIS: SJIS
        !           494:         UTF-8: UTF-8
        !           495: 
        !           496: 
        !           497: o encoding = i18n_http_input()
        !           498: 
        !           499:     Returns http input encoding.
        !           500: 
        !           501:     encodings
        !           502:         EUC-JP : EUC
        !           503:         SJIS: SJIS
        !           504:         JIS : JIS
        !           505:         UTF-8: UTF-8
        !           506:         pass: no conversion (only if i18n.http_input is set to pass)
        !           507: 
        !           508: 
        !           509: o string = i18n_convert(string, encoding)
        !           510:   string = i18n_convert(string, encoding, pre-conversion-encoding)
        !           511: 
        !           512:     Returns converted string in desired encoding.  If
        !           513:     pre-conversion-encoding is not defined, the given 
        !           514:     string is assumed to be in internal encoding.
        !           515: 
        !           516:     encoding
        !           517:         EUC-JP : EUC
        !           518:         SJIS: SJIS
        !           519:         JIS : JIS
        !           520:         UTF-8: UTF-8
        !           521:         pass: no conversion
        !           522: 
        !           523:     pre-conversion-encoding
        !           524:         EUC-JP : EUC
        !           525:         SJIS: SJIS
        !           526:         JIS : JIS
        !           527:         UTF-8: UTF-8
        !           528:         pass: no conversion
        !           529:         auto: auto detection
        !           530: 
        !           531: 
        !           532: o encoding = i18n_discover_encoding(string)
        !           533: 
        !           534:     Encoding of the given string is returned (as a string).
        !           535: 
        !           536:     encoding
        !           537:         EUC-JP : EUC
        !           538:         SJIS: SJIS
        !           539:         JIS : JIS
        !           540:         UTF-8: UTF-8
        !           541:         ASCII: ASCII (only 09h, 0Ah, 0Dh, 20h-7Eh)
        !           542:         pass: unable to determine (text is too short to determine)
        !           543:         unknown: unknown or possible error
        !           544: 
        !           545: 
        !           546: o int = mbstrlen(string)
        !           547: o int = mbstrlen(string, encoding)
        !           548: 
        !           549:     Returns character length of a given string.  If no encoding is defined,
        !           550:     the encoding of string is assumed to be the internal encoding.
        !           551: 
        !           552:     encoding
        !           553:         EUC-JP : EUC
        !           554:         SJIS: SJIS
        !           555:         JIS : JIS
        !           556:         UTF-8: UTF-8
        !           557:         auto: automatic
        !           558: 
        !           559: 
        !           560: o int = mbstrpos(string1, string2)
        !           561: o int = mbstrpos(string1, string2, start)
        !           562: o int = mbstrpos(string1, string2, start, encoding)
        !           563: 
        !           564:     Same as strpos.  If no encoding is defined, the encoding of string
        !           565:     is assumed to be the internal encoding.
        !           566: 
        !           567:     encoding
        !           568:         EUC-JP : EUC
        !           569:         SJIS: SJIS
        !           570:         JIS : JIS
        !           571:         UTF-8: UTF-8
        !           572: 
        !           573: 
        !           574: o int = mbstrrpos(string1, string2)
        !           575: o int = mbstrrpos(string1, string2, encoding)
        !           576: 
        !           577:     Same as strrpos.  If no encoding is defined, the encoding of string
        !           578:     is assumed to be the internal encoding.
        !           579: 
        !           580:     encoding
        !           581:         EUC-JP : EUC
        !           582:         SJIS: SJIS
        !           583:         JIS : JIS
        !           584:         UTF-8: UTF-8
        !           585: 
        !           586: 
        !           587: o string = mbsubstr(string, position)
        !           588: o string = mbsubstr(string, position, length)
        !           589: o string = mbsubstr(string, position, length, encoding)
        !           590: 
        !           591:     Same as substr.  If no encoding is defined, the encoding of string
        !           592:     is assumed to be the internal encoding.
        !           593: 
        !           594:     encoding
        !           595:         EUC-JP : EUC
        !           596:         SJIS: SJIS
        !           597:         JIS : JIS
        !           598:         UTF-8: UTF-8
        !           599: 
        !           600: 
        !           601: o string = mbstrcut(string, position)
        !           602: o string = mbstrcut(string, position, length)
        !           603: o string = mbstrcut(string, position, length, encoding)
        !           604: 
        !           605:     Same as subcut.  If position is the 2nd byte of a mb character, it will cut
        !           606:     from the first byte of that character.  It will cut the string without
        !           607:     chopping a single byte from a mb character.  In another words, if you
        !           608:     set length to 5, you will only get two mb characters.  If no encoding
        !           609:     is defined, the encoding of string is assumed to be the internal encoding.
        !           610: 
        !           611:     encoding
        !           612:         EUC-JP : EUC
        !           613:         SJIS: SJIS
        !           614:         JIS : JIS
        !           615:         UTF-8: UTF-8
        !           616: 
        !           617: 
        !           618: o string = i18n_mime_header_encode(string)
        !           619:     MIME encode the string in the format of =?ISO-2022-JP?B?[string]?=.
        !           620: 
        !           621: 
        !           622: o string = i18n_mime_header_decode(string)
        !           623:     MIME decodes the string.
        !           624: 
        !           625: 
        !           626: o string = i18n_ja_jp_hantozen(string)
        !           627: o string = i18n_ja_jp_hantozen(string, option)
        !           628: o string = i18n_ja_jp_hantozen(string, option, encoding)
        !           629: 
        !           630:     Conversion between full width character and halfwidth character.
        !           631: 
        !           632:     option
        !           633:     The following options are allowed.  The default is "KV".
        !           634:     Acronym: FW = fullwidth, HW = halfwidth
        !           635: 
        !           636:     "r" :  FW alphabet -> HW alphabet
        !           637: 
        !           638:     "R" :  HW alphabet -> FW alphabet
        !           639: 
        !           640:     "n" :  FW number -> HW number
        !           641: 
        !           642:     "N" :  HW number -> FW number
        !           643: 
        !           644:     "a" :  FW alpha numeric (21h-7Eh) -> HW alpha numeric
        !           645: 
        !           646:     "A" :  HW alpha numeric (21h-7Eh) -> FW alpha numeric
        !           647: 
        !           648:     "k" :  FW katakana -> HW katakana
        !           649: 
        !           650:     "K" :  HW katakana -> FW katakana
        !           651: 
        !           652:     "h" :  FW hiragana -> HW hiragana
        !           653: 
        !           654:     "H" :  HW hiragana -> FW katakana
        !           655: 
        !           656:     "c" :  FW katakana -> FW hiragana
        !           657: 
        !           658:     "C" :  FW hiragana -> FW katakana
        !           659: 
        !           660:     "V" :  merge dakuon character.  only works with "K" and "H" option
        !           661: 
        !           662:     encoding
        !           663:     If no encoding is defined, the encoding of string is assumed to be
        !           664:     the internal encoding.
        !           665:         EUC-JP : EUC
        !           666:         SJIS: SJIS
        !           667:         JIS : JIS
        !           668:         UTF-8: UTF-8
        !           669: 
        !           670: 
        !           671: int = mbereg(regex_pattern, string, string)
        !           672: int = mberegi(regex_pattern, string, string)
        !           673:     mb version of ereg() and eregi()
        !           674: 
        !           675: 
        !           676: string = mbereg_replace(regex_pattern, string, string)
        !           677: string = mberegi_replace(regex_pattern, string, string)
        !           678:     mb version of ereg_replace() and eregi_replace()
        !           679: 
        !           680: 
        !           681: string_array = mbsplit(regex, string, limit)
        !           682:     mb version of split()
        !           683: 
        !           684: 
        !           685: 
        !           686: ==========================================
        !           687:   FAQ
        !           688: ==========================================
        !           689: 
        !           690: Here, we have gathered some commonly asked questions on PHP-jp mailing
        !           691: list.
        !           692: 
        !           693: o To use Japanese in GET method
        !           694: 
        !           695: If you need to assign Japanese text in GET method with argument, such as;
        !           696: xxxx.php?data=<Japanese text>, use urlencode function in PHP.  If not,
        !           697: text may not be passed onto action php properly.
        !           698: 
        !           699: ex: <a href="hoge.php?data=<? echo urlencode($data) ?>">Link</a>
        !           700: 
        !           701: 
        !           702: o When passing data via GET/POST/COOKIE, \ character sneaks in
        !           703: 
        !           704: When using SJIS as internal encoding, or passed-on data includes '"\, 
        !           705: PHP automatically inserts escaping character, \.  Set magic_quotes_gpc
        !           706: in php3.ini from On to Off.  An alternative work around to this problem 
        !           707: is to use StripSlashes().
        !           708: 
        !           709: If $quote_str is in SJIS and you would like to extract Japanese text,
        !           710: use ereg_replace as follows:
        !           711: 
        !           712: ereg_replace(sprintf("([%c-%c%c-%c]\\\\)\\\\",0x81,0x9f,0xe0,0xfc),
        !           713:        "\\1",$quote_str);
        !           714: 
        !           715: This will effectively extract Japanese text out of $quote_str.
        !           716: 
        !           717: 
        !           718: o Sometimes, encoding detection fails
        !           719: 
        !           720: If i18n_http_input() returns 'pass', it's likely that PHP failed to
        !           721: detect whether it's SJIS or EUC.  In such case, use <input type=hidden
        !           722: value="some Japanese text"> to properly detect the incoming text's 
        !           723: encoding.
        !           724: 
        !           725: 
        !           726: 
        !           727: ==========================================
        !           728:   Japanese Manual
        !           729: ==========================================
        !           730: Translated manual done by "PHP Japanese Manual Project" :
        !           731: 
        !           732: http://www.php.net/manual/ja/manual.php
        !           733: 
        !           734: Starting 3.0.18-i18n-ja, we have removed doc-jp from tarball package.
        !           735: 
        !           736: 
        !           737: ==========================================
        !           738:   Change Logs
        !           739: ==========================================
        !           740: 
        !           741: o 2000-10-28, Rui Hirokawa <hirokawa@php.net>
        !           742: 
        !           743: This patch is derived from php-3.0.15-i18n-ja as well as php-3.0.16 by 
        !           744: Kuwamura applied to original php-3.0.18.  It also includes following fixes:
        !           745: 
        !           746: 1) allows you to set charset in mail().
        !           747: 2) fixed mbregex definitions to avoid conflicts with system regex
        !           748: 3) php3.ini-dist now uses PASS for http_output instead of SJIS
        !           749: 
        !           750: o 2000-11-24, Hironori Sato <satoh@yyplanet.com>
        !           751: 
        !           752: Applied above patched and added detection for gdImageStringTTF in configure.
        !           753: Following setups are known to work:
        !           754: 
        !           755: gd-1.3-6, gd-devel-1.3-6, freetype-1.3.1-5, freetype-devel-1.3.1-5
        !           756:     ImageTTFText($im,$size,$angle,$x1,$y1,$color,"/path/to/font.ttf",
        !           757:         i18n_convert("日本語", "UTF-8"));
        !           758:     ImageGif($im);
        !           759: 
        !           760: gd-1.7.3-1k1, gd-devel-1.7.3-1k1, freetype-1.3.1-5, freetype-devel-1.3.1-5
        !           761:     ImageTTFText($im,$size,$angle,$x1,$y1,$color,"/path/to/font.ttf","日本語");
        !           762:     ImagePng($im);
        !           763:     * i18n_internal_encoding = EUC 又は SJIS
        !           764: 
        !           765: For any gd libraries before 1.6.2, you need to use i18n_convert.  For
        !           766: gd-1.5.2/3, upgrade to anything above 1.7 to use ImageTTFText without
        !           767: using i18n_convert.  As long as you have internal_encoding set to EUC or
        !           768: SJIS, ImageTTFText should work without mojibake.  Again, make sure you 
        !           769: have i18n_http_output("pass") before calling ImageGif, ImagePng, ImageJpeg!
        !           770: 
        !           771: o 2000-12-09, Rui Hirokawa <hirokawa@php.net>
        !           772: 
        !           773: Fixed mail() which was causing segmentation fault when header was null.
        !           774: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>