問題タブ [mbstring]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - PHP Web サイトから無効な utf8 をフィルタリングしているのは何ですか?
私のウェブサイトは完全に utf-8 (mysql、http ヘッダー、PHP mb_string など) を使用するように変換されています。
いくつかの侵入テストを行っており、無効な utf をスクリプトの 1 つに (BurpSuite を使用して) POST しようとしています。
しかし、無効な utf を投稿すると、$_POST 変数を 16 進ダンプするだけで、mb_detect_encoding を使用して検証する前に、無効な utf シーケンスが既にサニタイズされていることがわかります。
これは私にとって朗報のように思えますが、どのレイヤーが POST データを変換しているかを知りたいですか?
これは Content-Type HTTP ヘッダーの副作用ですか、おそらく私の Web サーバー (lighttpd) が実行しています。それとも、$_POST を入力するときに PHP 自体がそれを行っているのでしょうか?
無効な utf が 16 進ダンプされることを期待していたので、自分でサニタイズする必要がありました。
php - mb_substr()の後に最も近いスペース文字を見つけるphp
文字列を約 160 文字で切り取る必要がありますが、最も近いスペース文字で切り取りたいと考えています。mb_
UTF-8 フォント (関数)を動作させると、作業が悪化します。私のコードは次のとおりです。
もっとエレガントな方法を知っている人はいますか?
php - 無効な UTF-8 文字を疑問符で置き換えると、mbstring.substitute_character が無視されるようです
無効な UTF-8 文字を引用符に置き換えたい (PHP 5.3.5)。
これまでのところ、この解決策がありますが、無効な文字は「?」に置き換えられるのではなく削除されます。
出力する必要があります:
しかし、現在は次のように出力されます:
何かアドバイス?
別の方法でそれを行いますか (preg_replace()
たとえば、を使用しますか?)
ありがとう。
php - 1つのホストに対してのみphp mb_stringを有効にする方法は?
私はcPanelを備えたcentOSマシンを持っています。mb_string を使用して PHP をコンパイルしたところ、問題なく動作しました。1 つを除くすべてのホスティング アカウントで無効にしたいので、 php.ini で無効にしましたが、特定のホストで有効にしたいと考えています。
これは apache の .htaccess ファイルで可能であることを知っています。しかし、どのように、そしてどのようなコマンドですか? 洞察はありますか?
ありがとう !
php - PHPでマルチバイトトリム?
どうやら家族mb_trim
にはないようなので、自分用に実装しようとしています。mb_*
最近、 php.netのコメントでこの正規表現を見つけました。
したがって、次の方法で実装します。
正規表現は私には正しいようですが、私は正規表現に非常に慣れていません。これにより、文字列の先頭/末尾にあるUnicode スペースが効果的に削除されますか?
php - CentOS 6.2 に PHP mbstring をインストールする方法
CentOS 6.2 で PHP を使用して mbstring をインストールする方法
私はもう試した:
しかし、パッケージが見つかりませんでしたか?
php - mbstringモジュールをロードできません
CLIでスクリプトを実行すると、次のエラーが発生します。
いくつかの背景。
MySQLとApache2.2(両方とも現在機能している)でWindows 7(これを作業制約と呼びます)を実行する
この関数がモジュールphp_mbstring.dllの一部であることを理解しています
これをロードするための取り組みの網羅的なリストを試みます。
- php.iniの場所を確認しました。phpinfoは、ロードされたファイルがc:\phpにあることを示します。構成ファイルはc:\ windowsにあります(2つの場所-両方とも同じ.iniファイルを持っています)
- php.iniファイルにはコメントされていないextension=php_mbstring.dllがあります
- 拡張ディレクトリは、両方のphp.iniファイルでextension_dir = "c:\ php\ext"として指定されています。
- 指定されたファイル(php_mbstring.dll)は、実際には指定されたディレクトリc:\ php \ ext\php_mbstring.dllに存在します。
- これが効果的である理由はわかりませんが、他のフォーラムで見られるように、dllをphpルートとwindows32ディレクトリの両方に移動しました
- 他の機能的な非コアモジュール(例:mysqli)を同じ方法で問題なくロードしています
ロードされた構成ファイル(c:\ php \ php.ini)の拡張子行のコメントを解除すると、「php5.dllがコンピューターにないため開始できません」という追加のシステムエラーが次のように表示されることに注意してください。ダイアログボックス。両方とどちらかでコメントを外そうとしましたが、同じエラーが発生します。
PHPを再コンパイルまたは再インストールせずにこのモジュールをロードする方法があると思います。