93689


PHPの関数名には、「アスタリスク*」や「エスケープ\」も使用できますか？  
例えば「fetch_*_id」のような関数名もOKですか？

> 関数名は、PHP の他のラベルと同じ規則に従います。関数名として有効な 形式は、まず文字かアンダースコアで始まり、その後に任意の数の文字・
> 数字・あるいはアンダースコアが続くものです。正規表現で表すと、 `^[a-zA-
> Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$.` となります。

[ユーザー定義関数](https://www.php.net/manual/ja/functions.user-
defined.php#:%7E:text=%E9%96%A2%E6%95%B0%E5%90%8D%E3%81%AF%E3%80%81PHP%20%E3%81%AE,%E3%81%A8%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82)  
[予約語の一覧](https://www.php.net/manual/ja/reserved.php)


CC BY-SA 4.0
2023-02-02T19:02:36.850
93688
2023-02-03T01:43:32.747
2023-02-03T01:43:32.747
3060
7886
question
php
PHPの関数名に「アスタリスク*」や「エスケープ\」も使用できますか？


実際に自分で試したほうが早いと思いますが...

UNICODE において（半角の） `*` は `U+002A` また `\` は `U+005C` これらを UTF-8 表記すると `\x2A` なり
`\x5C` になりますが、これは正規表現 `[a-zA-Z_\x80-\xff]` に含まれませんのでダメです。

全角アスタリスク `＊` は `U+FF0A` UTF-8 表記で `\xEF \xBC \x8A` であり、これは先の正規表現に含まれるので OK

[code]

    <?php function f＊o() { echo sha1("abc"); }
    f＊o()?>
    
[/code]

は問題なく実行できました。

[ユーザーレベルでの命名の手引き](https://www.php.net/manual/ja/userlandnaming.php)
に合致しているかどうかまでは未確認っス。まあだいたいにおいてこの手の（いわゆる）全角文字を使うと宗教戦争を巻き起こしますので使わないほうが良い、ということに相場が決まっています。


CC BY-SA 4.0
2023-02-02T23:29:13.123
93689
2023-02-02T23:29:13.123
8589
93688
answer