!extend::vvvvv:1000:512
!extend::vvvvv:1000:512
★スレ立て時 ↑ が3行以上になるようコピペ
PHPに関する質問スレです
前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 13
https://mevius.5ch.net/test/read.cgi/tech/1631147923/
次スレは>>980以降
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
【PHP】下らねぇ質問はここに書き込みやがれ 14
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん (ワッチョイ 0f97-W3aP)
2022/09/20(火) 16:46:23.39ID:Sb2Kpzh+0982デフォルトの名無しさん (ワッチョイ 197b-QJZg)
2024/10/24(木) 22:06:48.35ID:D6fJlQ4l0 >>981
> これは表が間違ってます
確認した。md打つときに列が一個ずれて、onigがyesになるべき所がRubyの列に入ってるんだな
誰か余裕があったら指摘してあげて
> 上記の ruby のオプション指定に oniguruma のものをコピペして動くかどうかを試していますが
いいね。この方が早そうだ
> ちょっと日数がかかるかも知れませんが成功したらご報告に伺います、ありがとうございました!
はいまあ頑張って
ちなみに1つバグ、というか不一致を発見した
php_mbregex.c内、_php_mb_regex_init_options関数で、単純にRubyの r 指定等すると上書きしている為、
『最初に』指定しないと正しく動作しない(それ以前に指定したフラグが全部キャンセルされる)
しかしphp.netには『最後に』と明記してある
> モードを設定する際には、モード文字は最後に指定しなければなりません。
> https://www.php.net/manual/ja/function.mb-regex-set-options.php
これも誰か余裕有ったら指摘してあげて。勿論報告者の手柄にしていい
本来はPCRE側、つまりpreg_replaceと同様にすべき
となると多分フラグの順は問わないので、
2パスにして1周目でRegex構文モードを、2周目で各フラグを設定するようにCを修正するのが正しい
ドキュメント修正で済ませる場合は上記の通り、『最後に』と修正すれば終了
(Cの修正案が要るなら俺が書いてもいい、が、手続きとか知らんし面倒だから誰かやってくれ、勿論報告者が発見した事にしていい)
だからまあ、挙動不審なのはもしかするとフラグの指定順がまずいのかも
> これは表が間違ってます
確認した。md打つときに列が一個ずれて、onigがyesになるべき所がRubyの列に入ってるんだな
誰か余裕があったら指摘してあげて
> 上記の ruby のオプション指定に oniguruma のものをコピペして動くかどうかを試していますが
いいね。この方が早そうだ
> ちょっと日数がかかるかも知れませんが成功したらご報告に伺います、ありがとうございました!
はいまあ頑張って
ちなみに1つバグ、というか不一致を発見した
php_mbregex.c内、_php_mb_regex_init_options関数で、単純にRubyの r 指定等すると上書きしている為、
『最初に』指定しないと正しく動作しない(それ以前に指定したフラグが全部キャンセルされる)
しかしphp.netには『最後に』と明記してある
> モードを設定する際には、モード文字は最後に指定しなければなりません。
> https://www.php.net/manual/ja/function.mb-regex-set-options.php
これも誰か余裕有ったら指摘してあげて。勿論報告者の手柄にしていい
本来はPCRE側、つまりpreg_replaceと同様にすべき
となると多分フラグの順は問わないので、
2パスにして1周目でRegex構文モードを、2周目で各フラグを設定するようにCを修正するのが正しい
ドキュメント修正で済ませる場合は上記の通り、『最後に』と修正すれば終了
(Cの修正案が要るなら俺が書いてもいい、が、手続きとか知らんし面倒だから誰かやってくれ、勿論報告者が発見した事にしていい)
だからまあ、挙動不審なのはもしかするとフラグの指定順がまずいのかも
983デフォルトの名無しさん (ワッチョイ 197b-QJZg)
2024/10/24(木) 22:08:58.49ID:D6fJlQ4l0 > すごい解析力に脱帽でした
お世辞乙だがマジレスすると、実は普通に読めて、それがOSSの定義だったりするので、そんなにすごくもない
phpも30年間OSSとしてずっとメンテされており、当たり前だが多くの人が読めるからメンテ出来てる
だから逆に言えば、読めないコードはOSSとしては生き残れないし、30年は淘汰に十分な期間ではある
よって、長寿OSS、つまりphpやGNUやLinuxは、OSSに参戦するレベルの連中ならある程度読めて当然で、
「僕が読めないから汚いコ
ードだ」と寝言ほざいてる奴には「お前の頭がOSSの域に達してないだけだ馬鹿タレ」と返していい
ただ読めると言っても実際に読んでいるわけではなくて、
この仕様ならこういう作りだろうなという予測通りになっているのをなぞっているだけ
だから逆に、初心者や、まだ淘汰されてないOSSのコ
ードとかは、普通に読めない
(読む価値無いから無視でいいのだが)
だから今回は
> 以下のページは oniguruma の各パーツごとのオプション名を説明するページです
これが大きかった
そしてこれがpnp.net上のRegex構文モードと対になってるのが分かると、なるほどね、となった
まあ結局、一通り出来るようになって、書くのには苦労しなくなると、あとは仕様の理解度で差が出る、ということ
php_mbregexのコ
ードは悪いコ
ードではないね
愚直にやってるだけのドベタなコ
ードで、すごくもないが、でもこういうコ
ードがOSSとしては長生きするのだろうよ
(変な改行はNGワード逃れ)
お世辞乙だがマジレスすると、実は普通に読めて、それがOSSの定義だったりするので、そんなにすごくもない
phpも30年間OSSとしてずっとメンテされており、当たり前だが多くの人が読めるからメンテ出来てる
だから逆に言えば、読めないコードはOSSとしては生き残れないし、30年は淘汰に十分な期間ではある
よって、長寿OSS、つまりphpやGNUやLinuxは、OSSに参戦するレベルの連中ならある程度読めて当然で、
「僕が読めないから汚いコ
ードだ」と寝言ほざいてる奴には「お前の頭がOSSの域に達してないだけだ馬鹿タレ」と返していい
ただ読めると言っても実際に読んでいるわけではなくて、
この仕様ならこういう作りだろうなという予測通りになっているのをなぞっているだけ
だから逆に、初心者や、まだ淘汰されてないOSSのコ
ードとかは、普通に読めない
(読む価値無いから無視でいいのだが)
だから今回は
> 以下のページは oniguruma の各パーツごとのオプション名を説明するページです
これが大きかった
そしてこれがpnp.net上のRegex構文モードと対になってるのが分かると、なるほどね、となった
まあ結局、一通り出来るようになって、書くのには苦労しなくなると、あとは仕様の理解度で差が出る、ということ
php_mbregexのコ
ードは悪いコ
ードではないね
愚直にやってるだけのドベタなコ
ードで、すごくもないが、でもこういうコ
ードがOSSとしては長生きするのだろうよ
(変な改行はNGワード逃れ)
984947 (ワッチョイ d274-nV0L)
2024/10/25(金) 21:53:01.03ID:hP0G6XWW0 > OSSに参戦するレベルの連中ならある程度読めて当然
これが出来るようになることがどれだけすごいことか..
ここでこうやって語って下さるだけでも私含め誰かのためになるめちゃめちゃ
貴重な存在ですよ、いつまでも元気で現役して下さい!
> OSS 淘汰
後で手を入れる人のことまで考えてコーディングされていたんですね
そこまで考えてませんでした、目からうろこです
> 間違いの報告
私はC言語を知らないので間違いの確認作業が出来るか自信がありませんが確認出来たら
報告しに行きますね (ここの回答者様のほうが適任だと思いますのでどなたか余力のある方は是非..)
これが出来るようになることがどれだけすごいことか..
ここでこうやって語って下さるだけでも私含め誰かのためになるめちゃめちゃ
貴重な存在ですよ、いつまでも元気で現役して下さい!
> OSS 淘汰
後で手を入れる人のことまで考えてコーディングされていたんですね
そこまで考えてませんでした、目からうろこです
> 間違いの報告
私はC言語を知らないので間違いの確認作業が出来るか自信がありませんが確認出来たら
報告しに行きますね (ここの回答者様のほうが適任だと思いますのでどなたか余力のある方は是非..)
985デフォルトの名無しさん (ワッチョイ 197b-QJZg)
2024/10/26(土) 20:57:24.64ID:BX88EvoL0 >>984
> 私はC言語を知らないので
それでソースファイル当たるとは勇者だな。ただ姿勢としては正しい
ソースなんて読める読めないではなく、読む読まないだし、
そもそも読めない奴こそ勉強になるから読めであり、
読める奴(=そのコード構成が自分でも組める奴)が読んでも得る物はあまりない
> 間違いの確認作業が出来るか自信がありませんが確認出来たら
> 報告しに行きますね
Cに関しては俺がフォロー出来るが、それ以前にバグって無さそう(すまんが俺の勘違いっぽい)
よく見ればフラグは optm |= で溜めてて、文法の切り換えは *syntax = なので上書きしてない
だから正確には、
× モード文字は最後に指定しなければなりません。 (現在の表記)
○ 最後に指定したモード文字が有効になります。
ではあるが、現在の表記でも問題はないはず
なおonigurumaの表の間違いはGitHubのissuesに凸すれば多分本人(kkos)がすぐ直してくれる
そちらはonigurumaをよく知ってるみたいなので、こちらはやってみてどうぞ
> 私はC言語を知らないので
それでソースファイル当たるとは勇者だな。ただ姿勢としては正しい
ソースなんて読める読めないではなく、読む読まないだし、
そもそも読めない奴こそ勉強になるから読めであり、
読める奴(=そのコード構成が自分でも組める奴)が読んでも得る物はあまりない
> 間違いの確認作業が出来るか自信がありませんが確認出来たら
> 報告しに行きますね
Cに関しては俺がフォロー出来るが、それ以前にバグって無さそう(すまんが俺の勘違いっぽい)
よく見ればフラグは optm |= で溜めてて、文法の切り換えは *syntax = なので上書きしてない
だから正確には、
× モード文字は最後に指定しなければなりません。 (現在の表記)
○ 最後に指定したモード文字が有効になります。
ではあるが、現在の表記でも問題はないはず
なおonigurumaの表の間違いはGitHubのissuesに凸すれば多分本人(kkos)がすぐ直してくれる
そちらはonigurumaをよく知ってるみたいなので、こちらはやってみてどうぞ
986947 (ワッチョイ 3374-ohr8)
2024/10/27(日) 14:13:33.60ID:heVNiBfi0 > そもそも読めない奴こそ勉強になるから読めであり
そうですね、読んでて色々勉強になってます
書けと言われたらさっぱりですが読むほうでは少しだけ進歩したな、とは感じます
> それ以前にバグって無さそう
これは良かったです、正直私には荷が重かったのでw
> モード文字は最後に指定しなければなりません
これは mbstring の作者さんが意図するところがはっきり分からないので悩みます
「最後の文字だけ取り出せば指定されているモードが分かる」という仕様に
することを視野に入れているのかも知れませんし..
一応英語のページも見ましたが日本語と同じ意味で書いているようです
https://www.php.net/manual/en/function.mb-regex-set-options.php
> oniguruma の表
この SYNTAX.md は oniguruma 作者さんが作ったページではなく第三者が作ったものを
マージしたものらしく、ページが作られてから1年弱で更新が止まってます
https://github.com/kkos/oniguruma/commits/master/doc/SYNTAX.md
最後の更新から5年近く経っていて情報も古くなっています
私がやるならこのページを oniguruma 6.9.9 のものに更新します
しかし今は php で (*SKIP) を動かすことを目指しているのでその後にやりますね
oniguruma で指定されている option を読み込んであの表を出力するプログラムが
あったら便利そうです、いつか作るかも知れません
そうですね、読んでて色々勉強になってます
書けと言われたらさっぱりですが読むほうでは少しだけ進歩したな、とは感じます
> それ以前にバグって無さそう
これは良かったです、正直私には荷が重かったのでw
> モード文字は最後に指定しなければなりません
これは mbstring の作者さんが意図するところがはっきり分からないので悩みます
「最後の文字だけ取り出せば指定されているモードが分かる」という仕様に
することを視野に入れているのかも知れませんし..
一応英語のページも見ましたが日本語と同じ意味で書いているようです
https://www.php.net/manual/en/function.mb-regex-set-options.php
> oniguruma の表
この SYNTAX.md は oniguruma 作者さんが作ったページではなく第三者が作ったものを
マージしたものらしく、ページが作られてから1年弱で更新が止まってます
https://github.com/kkos/oniguruma/commits/master/doc/SYNTAX.md
最後の更新から5年近く経っていて情報も古くなっています
私がやるならこのページを oniguruma 6.9.9 のものに更新します
しかし今は php で (*SKIP) を動かすことを目指しているのでその後にやりますね
oniguruma で指定されている option を読み込んであの表を出力するプログラムが
あったら便利そうです、いつか作るかも知れません
987デフォルトの名無しさん (ワッチョイ 497b-vCJ4)
2024/10/28(月) 10:05:20.25ID:l7XbYqqi0 >>986
言い方が悪かったかもしれないが、php.netの表記は直す必要がない。(直すべきではない)
プログラミング等においては、
ドキュメント記載の動作範囲⊆実際の動作範囲
である事は絶対に必要だが、書いてない範囲は動いても動かなくても問題ないから。
(今回は、最後に書けば確実に動くので問題ない。
記載を変更したら何か変更があったかと勘ぐられ、余計におかしくなる)
だからphp側については今回は何もする必要がない。
> これは mbstring の作者さんが意図するところがはっきり分からないので悩みます
これはちと違ってて、仕様は実装に依存すべきではないし、してはいけない。
というか、仕様を変更するとこれまで動いてたコートが動かなくなる(=互換性が無くなる)可能性が出てくるので、
原則として、仕様は追加は出来るが削除は出来ない。
逆に実装は変わるものだし、(互換性を保たれている限り)変わってもいいものだ。
だから仕様が実装に依存した場合、初期実装は楽だが、わりと早々に破綻する。
よって、本来は、最初の最初に仕様を未来永劫変更せずに済むレベルまで練るべきだし、
多少実装が困難な仕様でも、それが良い仕様なら、頑張って実装するしかない。
(主従関係でいえば、仕様が主で実装が従)
言い方が悪かったかもしれないが、php.netの表記は直す必要がない。(直すべきではない)
プログラミング等においては、
ドキュメント記載の動作範囲⊆実際の動作範囲
である事は絶対に必要だが、書いてない範囲は動いても動かなくても問題ないから。
(今回は、最後に書けば確実に動くので問題ない。
記載を変更したら何か変更があったかと勘ぐられ、余計におかしくなる)
だからphp側については今回は何もする必要がない。
> これは mbstring の作者さんが意図するところがはっきり分からないので悩みます
これはちと違ってて、仕様は実装に依存すべきではないし、してはいけない。
というか、仕様を変更するとこれまで動いてたコートが動かなくなる(=互換性が無くなる)可能性が出てくるので、
原則として、仕様は追加は出来るが削除は出来ない。
逆に実装は変わるものだし、(互換性を保たれている限り)変わってもいいものだ。
だから仕様が実装に依存した場合、初期実装は楽だが、わりと早々に破綻する。
よって、本来は、最初の最初に仕様を未来永劫変更せずに済むレベルまで練るべきだし、
多少実装が困難な仕様でも、それが良い仕様なら、頑張って実装するしかない。
(主従関係でいえば、仕様が主で実装が従)
988デフォルトの名無しさん (ワッチョイ 497b-vCJ4)
2024/10/28(月) 10:05:40.31ID:l7XbYqqi0 ただ、
○ ドキュメントを読めば使える
◎ ドキュメントを読まなくても使える
なので、今回はグダグダ言わずにpcreと全て揃えるのが理想で、目指す所は
既存のコードを mb_* とするとマルチバイト対応になるだけで、全て動く、ではあるが、
現実的には無理だし、phpの場合は仕様自体がわりとグダグダなので、
多少でも綺麗にしていく為には新規部分は(従来の汚い仕様を無視して)綺麗に作るしかなく、
まあ許容範囲だと思うよ。
見た目、
A, 元々は記載通り「最後に書く必要があった」が、pcreと揃えるよう修正して「いつ書いても動く」ようになった
B. 元々何も記載無かったが、複数書いた場合等の動作が曖昧になるので、
「確実に動く条件」を記載するように求められ、書いた
ように見える。
なお仕様を自由に決めて良いなら、
そもそも「モード」を「フラグ」に突っ込むべきなのか?という話で、
(php.netでは纏めて「オプション」「パターン修飾子」と呼称されてるので曖昧になってる)
例えばJSなら
String.replace(/regular expression/flags, replacement, mode); // modeでRubyやonigurumaモードを切り替える
で終わってた気がするし、
これなら「ひとつしか指定出来ません」「最後に指定しなければなりません」はそもそも必要なくなる。
しかし使いもしない引数を無駄に増やすのもよろしくないし、フラグに突っ込んでしまえ、の判断もありだろう。
(pcreもそうなってるし)
○ ドキュメントを読めば使える
◎ ドキュメントを読まなくても使える
なので、今回はグダグダ言わずにpcreと全て揃えるのが理想で、目指す所は
既存のコードを mb_* とするとマルチバイト対応になるだけで、全て動く、ではあるが、
現実的には無理だし、phpの場合は仕様自体がわりとグダグダなので、
多少でも綺麗にしていく為には新規部分は(従来の汚い仕様を無視して)綺麗に作るしかなく、
まあ許容範囲だと思うよ。
見た目、
A, 元々は記載通り「最後に書く必要があった」が、pcreと揃えるよう修正して「いつ書いても動く」ようになった
B. 元々何も記載無かったが、複数書いた場合等の動作が曖昧になるので、
「確実に動く条件」を記載するように求められ、書いた
ように見える。
なお仕様を自由に決めて良いなら、
そもそも「モード」を「フラグ」に突っ込むべきなのか?という話で、
(php.netでは纏めて「オプション」「パターン修飾子」と呼称されてるので曖昧になってる)
例えばJSなら
String.replace(/regular expression/flags, replacement, mode); // modeでRubyやonigurumaモードを切り替える
で終わってた気がするし、
これなら「ひとつしか指定出来ません」「最後に指定しなければなりません」はそもそも必要なくなる。
しかし使いもしない引数を無駄に増やすのもよろしくないし、フラグに突っ込んでしまえ、の判断もありだろう。
(pcreもそうなってるし)
989デフォルトの名無しさん (ワッチョイ 497b-vCJ4)
2024/10/28(月) 10:05:57.25ID:l7XbYqqi0 > しかし今は php で (*SKIP) を動かすことを目指しているのでその後にやりますね
それで正しい。義務感でやるものではないし、面倒なら放置でいい。
(というかこの位緩くないと続かない。だいたい昨今のSNS疲れとかは義務感から来てるものだし)
だからまあ、「この表は自分も今後とも使うので正確であって欲しい。
とりあえず自分用に更新版作ったから上げとく」位でいい。
そしてそれをpythonにやらせたのなら、それもついでに上げとく、程度で十分だ。
それで正しい。義務感でやるものではないし、面倒なら放置でいい。
(というかこの位緩くないと続かない。だいたい昨今のSNS疲れとかは義務感から来てるものだし)
だからまあ、「この表は自分も今後とも使うので正確であって欲しい。
とりあえず自分用に更新版作ったから上げとく」位でいい。
そしてそれをpythonにやらせたのなら、それもついでに上げとく、程度で十分だ。
990デフォルトの名無しさん (ワッチョイ 7b5f-kvRr)
2024/10/29(火) 00:01:17.52ID:R9Dn8Crp0 堂島の龍・・・ って言ったんだ
991947 (ワッチョイ 3374-ohr8)
2024/10/29(火) 11:56:37.23ID:FIsrbLEd0 > php側については今回は何もする必要がない
了解です、これは分かってましたので大丈夫です
> 原則として、仕様は追加は出来るが削除は出来ない
言われてみれば確かに.. 実装を仕様にしたせいで実際に破綻した経験もあったり(ぉぃ)
> pcreと全て揃えるのが理想
確かにそうですね
> A. B.
なるほど、"仕様が主" ということを考えると納得の推察です
> フラグに突っ込んでしまえ
それでオプションとモードが混ぜてあったんですねw
> 義務感でやるものではない
そうですね、でも SYNTAX.md の更新は私がやりたいと思ってるのでやると思います
ミスが出ないように少しづつ進めるつもりです、なので完成は来年になるかも知れません
ただ、私にはオプションの説明文は書けないのでソースのコメントをコピペするだけの
手抜きになると思います ( "説明文 == 仕様" なので )
PHP で (*SKIP) を使えるようにする件もあと少しでなんとかなりそうです
使えるように出来たら修正箇所を書きにまた来ます、ありがとうございました!
了解です、これは分かってましたので大丈夫です
> 原則として、仕様は追加は出来るが削除は出来ない
言われてみれば確かに.. 実装を仕様にしたせいで実際に破綻した経験もあったり(ぉぃ)
> pcreと全て揃えるのが理想
確かにそうですね
> A. B.
なるほど、"仕様が主" ということを考えると納得の推察です
> フラグに突っ込んでしまえ
それでオプションとモードが混ぜてあったんですねw
> 義務感でやるものではない
そうですね、でも SYNTAX.md の更新は私がやりたいと思ってるのでやると思います
ミスが出ないように少しづつ進めるつもりです、なので完成は来年になるかも知れません
ただ、私にはオプションの説明文は書けないのでソースのコメントをコピペするだけの
手抜きになると思います ( "説明文 == 仕様" なので )
PHP で (*SKIP) を使えるようにする件もあと少しでなんとかなりそうです
使えるように出来たら修正箇所を書きにまた来ます、ありがとうございました!
992デフォルトの名無しさん (ワッチョイ 7b47-MMV6)
2024/10/29(火) 14:57:45.06ID:HnPnA3Oe0 すまんけど参考に問題と結論をまとめてほしい
993デフォルトの名無しさん (ワッチョイ 497b-vCJ4)
2024/10/29(火) 20:54:54.00ID:zqRlJI/00994デフォルトの名無しさん (ワッチョイ 497b-vCJ4)
2024/10/29(火) 22:11:10.45ID:zqRlJI/00 >>992
問題: PHPで (*SKIP) が使えない (>>947)
結論: 現在は使えないのが仕様
php8.3.12(最新安定版)ではphp_mbstringが対応していない
oniguruma6.6.9(最新リリースバージョン)にも入ってない(開発したばかりで未リリース状態)
なので通常は>>956,959で公式リリースを待つが、
パフォーマンスの問題、或いは(現在開発中のphpアプリの)リリース時には使えるようになっているという読み等で、
GitHub上のonigurumaソースを自前でコンパイルして接続して使うのは自由
この場合の詳細は247が成功した後に報告してくれるから待てばいい
現在の作戦(981)の内容は以下(マクロは大文字で表記)
onigurumaは設定を自由に変更出来る
いくつかあるプリセットの内、ONIGURUMAを指定すれば(*SKIP)が使えるが、RUBYを指定しても使えない
現在のphpではデフォでRUBY指定であり、ONIGURUMA指定は出来ない --- (α)
なので、oniguruma側のRUBY設定値をONIGURUMA設定値で上書きし、
php側でRUBY指定しててもONIGURUMA指定での機能が使えるようにする
これだとonigurumaの再コンパイルだけで済むはず(=php_mbstringは変更無く使える)
この場合の問題は、ruby指定とoniguruma指定で完全な互換性がなかった場合に、(なお実際どうなのかは知らん)
他ソフト(laravel)等と組み合せると一部誤動作する可能性が出てくる事だが、
この場合はRUBYではなくEMACS等、
どう考えても誰も使ってないであろうマクロを潰せばいいだけなので、大した問題ではない
(とはいえ商用用途ではこれも許されないだろうが)
問題: PHPで (*SKIP) が使えない (>>947)
結論: 現在は使えないのが仕様
php8.3.12(最新安定版)ではphp_mbstringが対応していない
oniguruma6.6.9(最新リリースバージョン)にも入ってない(開発したばかりで未リリース状態)
なので通常は>>956,959で公式リリースを待つが、
パフォーマンスの問題、或いは(現在開発中のphpアプリの)リリース時には使えるようになっているという読み等で、
GitHub上のonigurumaソースを自前でコンパイルして接続して使うのは自由
この場合の詳細は247が成功した後に報告してくれるから待てばいい
現在の作戦(981)の内容は以下(マクロは大文字で表記)
onigurumaは設定を自由に変更出来る
いくつかあるプリセットの内、ONIGURUMAを指定すれば(*SKIP)が使えるが、RUBYを指定しても使えない
現在のphpではデフォでRUBY指定であり、ONIGURUMA指定は出来ない --- (α)
なので、oniguruma側のRUBY設定値をONIGURUMA設定値で上書きし、
php側でRUBY指定しててもONIGURUMA指定での機能が使えるようにする
これだとonigurumaの再コンパイルだけで済むはず(=php_mbstringは変更無く使える)
この場合の問題は、ruby指定とoniguruma指定で完全な互換性がなかった場合に、(なお実際どうなのかは知らん)
他ソフト(laravel)等と組み合せると一部誤動作する可能性が出てくる事だが、
この場合はRUBYではなくEMACS等、
どう考えても誰も使ってないであろうマクロを潰せばいいだけなので、大した問題ではない
(とはいえ商用用途ではこれも許されないだろうが)
995デフォルトの名無しさん (ワッチョイ 497b-vCJ4)
2024/10/29(火) 22:42:58.65ID:zqRlJI/00 真面目に直すなら、αを修正してphp側からONIGURUMA指定出来るようにすればいい
これは970に書いたとおり、
php_mbregex.c:489:static size_t _php_mb_regex_get_option_string
php_mbregex.c:594:static bool _php_mb_regex_init_options
の2関数を修正すればよく、下側は979に書いたとおり以下3行追加、上側はその逆を追加するだけ(多分)
case 'o':
*syntax = ONIG_SYNTAX_ONIGURUMA
break;
この辺やる気有るのならCのソースは俺が書いてもいいが、報告その他は全部やってくれ
報告の仕方は https://www.php.net/get-involved の通り
ただしバグ修正ではなく仕様追加なので、メンテナの判断により(ソースコードが妥当でも)却下される可
能性はある(改行は規制回避)
>>994 すまぬ一部修正、規制に引っかかったついでに最後の段落書き足したら大文字にするのを忘れた
× ruby指定とoniguruma指定で
○ RUBY指定とONIGURUMA指定で
これは970に書いたとおり、
php_mbregex.c:489:static size_t _php_mb_regex_get_option_string
php_mbregex.c:594:static bool _php_mb_regex_init_options
の2関数を修正すればよく、下側は979に書いたとおり以下3行追加、上側はその逆を追加するだけ(多分)
case 'o':
*syntax = ONIG_SYNTAX_ONIGURUMA
break;
この辺やる気有るのならCのソースは俺が書いてもいいが、報告その他は全部やってくれ
報告の仕方は https://www.php.net/get-involved の通り
ただしバグ修正ではなく仕様追加なので、メンテナの判断により(ソースコードが妥当でも)却下される可
能性はある(改行は規制回避)
>>994 すまぬ一部修正、規制に引っかかったついでに最後の段落書き足したら大文字にするのを忘れた
× ruby指定とoniguruma指定で
○ RUBY指定とONIGURUMA指定で
996947 (ワッチョイ 3374-D2cl)
2024/11/02(土) 11:20:08.91ID:grhM95Vo0 どうやら正規表現の syntax を RUBY から ONIGURUMA に変えるだけではダメそうです
この変更で (?W) が使えるようになったので syntax の切り替えは出来ているのですが、
正規表現に (*FAIL) や (*SKIP) を使うとエラーになります
php_mbregex.c の 473行目のエラー処理が実行されます
github.com/php/php-src/blob/2b10cd1bebde7b9844ebb6e3e60127dfe7b195c5/ext/mbstring/php_mbregex.c#L473
これを解決するには php_mbregex.c と onigurumaライブラリ を深く理解する必要があり、
このスレのみなさんにとっても簡単な問題ではないと思います
そのため、ここは一度戦略的に撤退し、次の好機をうかがうことにしました
長々とお付き合い下さりありがとうございました!
この変更で (?W) が使えるようになったので syntax の切り替えは出来ているのですが、
正規表現に (*FAIL) や (*SKIP) を使うとエラーになります
php_mbregex.c の 473行目のエラー処理が実行されます
github.com/php/php-src/blob/2b10cd1bebde7b9844ebb6e3e60127dfe7b195c5/ext/mbstring/php_mbregex.c#L473
これを解決するには php_mbregex.c と onigurumaライブラリ を深く理解する必要があり、
このスレのみなさんにとっても簡単な問題ではないと思います
そのため、ここは一度戦略的に撤退し、次の好機をうかがうことにしました
長々とお付き合い下さりありがとうございました!
997947 (ワッチョイ 3374-D2cl)
2024/11/02(土) 12:21:06.68ID:grhM95Vo0 詳細は以下のスレに書いておきました
agree.5ch.net/test/read.cgi/mango/1715675838/323-325n
C言語をいじるならデバックの仕方を知らないと話にならないようなので
そういうことを覚えるのにかなりの時間がかかりそうです、なのでこの件は一旦保留にさせて下さい
( fprintf を仕込んで ./configure, make, make install ではラチがあかなくなったので)
agree.5ch.net/test/read.cgi/mango/1715675838/323-325n
C言語をいじるならデバックの仕方を知らないと話にならないようなので
そういうことを覚えるのにかなりの時間がかかりそうです、なのでこの件は一旦保留にさせて下さい
( fprintf を仕込んで ./configure, make, make install ではラチがあかなくなったので)
998947 (ワッチョイ 6274-erF6)
2024/11/03(日) 21:59:48.17ID:kb0e81X60 補足: onig_init() は oniguruma の古いバージョンが使われたときに備えてのものでした
なので問題ありませんでした
現時点では正規表現に (*FAIL) や (*SKIP) を使うとエラーになる問題は
「PHPのインストール時に (*FAIL) が実装される前の oniguruma が入れられていて
それが使われているのではないか」という仮説を立てています
(*FAIL) が実装される前の oniguruma が使われていたなら「 "FAIL" なんて名前知らない!」と
言われてもおかしくないので..
なので問題ありませんでした
現時点では正規表現に (*FAIL) や (*SKIP) を使うとエラーになる問題は
「PHPのインストール時に (*FAIL) が実装される前の oniguruma が入れられていて
それが使われているのではないか」という仮説を立てています
(*FAIL) が実装される前の oniguruma が使われていたなら「 "FAIL" なんて名前知らない!」と
言われてもおかしくないので..
999947 (ワッチョイ 6274-erF6)
2024/11/04(月) 01:55:48.60ID:nQYymDx80 ↑の仮説は否定されました
oniguruma は最新Master branch版で間違いありませんでした
oniguruma 6.9.9 で Fix されたバグが直っているのを確認しました
また、古いバージョンの oniguruma が入っていないことを確認しました
libonig-dev なども含めて他の oniguruma は1つも入っていませんでした
oniguruma は最新Master branch版で間違いありませんでした
oniguruma 6.9.9 で Fix されたバグが直っているのを確認しました
また、古いバージョンの oniguruma が入っていないことを確認しました
libonig-dev なども含めて他の oniguruma は1つも入っていませんでした
1000947 (ワッチョイ 6274-erF6)
2024/11/05(火) 00:51:48.35ID:QtAnl6270 oniguruma 付属のテストファイル /sample/callout.c では (*FAIL) や (*SKIP) が動くので、このテストファイルのコ-ドを php_mbregex.c に移植して動かしてみました (コンパイルエラーを回避するための最低限の変更のみしました) そしてPHPを動かしてみたところ、問題のエラーと同じエラーが出ました
oniguruma 側でのエラーコード: -229
github.com/kkos/oniguruma/blob/f6723fd940b993b39b1535f71c8695867a5e92d1/src/oniguruma.h#L640
これにより、問題の原因がPHP側にあることが確定しました
しかし php_mbregex.c を読んでもこの問題を起こしそうな箇所は見当たりません
原因はコ-ドではなくPHPの環境にあるのかも知れま1000
oniguruma 側でのエラーコード: -229
github.com/kkos/oniguruma/blob/f6723fd940b993b39b1535f71c8695867a5e92d1/src/oniguruma.h#L640
これにより、問題の原因がPHP側にあることが確定しました
しかし php_mbregex.c を読んでもこの問題を起こしそうな箇所は見当たりません
原因はコ-ドではなくPHPの環境にあるのかも知れま1000
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 776日 8時間 5分 26秒
新しいスレッドを立ててください。
life time: 776日 8時間 5分 26秒
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 【速報】中国、水産物輸入停止と通達 「処理水」理由、日本政府へ ★5 [おっさん友の会★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 [ぐれ★]
- 中国側が首相答弁の撤回要求、日本側拒否★7 [夜のけいちゃん★]
- NHK会長 新語・流行語大賞ノミネート「オールドメディア」に反論「言われる筋合いはない」「新しいメディアだと思っている」 [muffin★]
- 【速報】 米大使「はっきりさせておこう、米国は尖閣諸島含め日本の防衛に全面コミット、中国がどうしようが変わらない」 [お断り★]
- 自民、経済対策で子ども1人に2万円給付へ 児童手当に上乗せ 所要額は約4000億円 [ぐれ★]
- 【速報】高市首相「つい言い過ぎた」 存立危機事態の答弁について [237216734]
- 中国、アメリカ産大豆を早速過去最大の規模でお買い上げ。トランプさん「中国との関係は非常に良好である」【高市悲報】 [709039863]
- ネトウヨ首長を選んだ結果、日本に損害与える。白浜のネトウヨパンダ町長と同じ構図か!?😲 [521921834]
- 【速報】中国、水産物輸入停止★2 [989870298]
- 【ネトウヨ悲報】基地内で女性をレイプした基地外米兵「記憶がない」 [834922174]
- 山上妹「統一信者から安倍自民への投票を求められた」法廷で証言 [947332727]
