目次
PHP はコンテンツの一部をアスタリスクに置き換えます
ホームページ バックエンド開発 PHPチュートリアル PHP はコンテンツの一部をアスタリスクに置き換えます_PHP チュートリアル

PHP はコンテンツの一部をアスタリスクに置き換えます_PHP チュートリアル

Jul 13, 2016 am 10:19 AM
コンテンツ 一部

PHP はコンテンツの一部をアスタリスクに置き換えます

最近のプロジェクトで、誰かの携帯電話番号の中間の桁を非表示にして、ID 番号の最後の 4 桁のみを表示する必要があることに遭遇しました。最初はネットで検索して、substr_replace関数を使って置き換えているのを見つけましたが、後からこの関数も使いましたが、実際に使ってみるとあまり役に立ちませんでした。
1.substr_replace
まずこの関数の構文を見てみましょう:
substr_replace(文字列,置換,開始,長さ)
パラメータ 説明
文字列 必須。チェックする文字列を指定します。
交換 必須。挿入する文字列を指定します。
スタート
必須。文字列内のどこから置換を開始するかを指定します。
正の数 - 開始オフセットで置換を開始します
負の数値 - 文字列の末尾からの開始オフセットから置換します
0 - 文字列の最初の文字から置換を開始します
チャーリスト
オプション。置換する文字数を指定します。
正の数 - 置換される文字列の長さ
負の数 - 文字列の末尾から置換される文字数
0 - 置換ではなく挿入
1. start と charlist が両方とも正の数値の場合、以下に示すように、Start が 0 から始まることを表しており、緑色の要素が置き換えられる要素になります。
2. start が負の数、charlist が正の数であると理解しやすいです
3. start が正の数、charlist が負の数の場合、最初はこれを誤解しました
4. start が負の数で、charlist が負の数の場合、注意すべき点が 1 つあります。start が負の数で、length が start 以下の場合、length は 0 です。この穴はとても入りやすいです
5. charlist が 0 の場合、置換ではなく挿入になります。 。 。
使ってみて、今のニーズには応えられるものの、将来的に拡張が必要になった場合にはかなり使いにくいと感じたので、自分で構築してみようと思いました。将来的にも便利に使えます。
2. 自作のアスタリスク置換機能
replaceStar($str, $start, $length = 0)
パラメータ
説明
str
必須。チェックする文字列を指定します。
スタート
必須。文字列内のどこから置換を開始するかを指定します。
正の数 - 開始オフセットで置換を開始します
負の数値 - 文字列の末尾からの開始オフセットから置換します
0 - 文字列の最初の文字から置換を開始します
長さ
オプション。置換する文字数を指定します。
正の数 - 置換される文字列の長さ(左から右)
負の数 - 置換される文字列の右から左への長さ
0 - start が正の数の場合、start から開始して左に終わりまで進みます
- start が負の数の場合、start から開始して右に進み、最後まで進みます
最初の 2 つのパラメータは上記と同じで、最後のパラメータは上記とは異なります
1. start と length が両方とも正の数の場合、substr_replace
と同じように動作します。
2. start が負の数、length が正の数の場合、substr_replace
と同じように動作します。
substr_replace
スターを置き換える
開始は正の数、長さは負の数です
開始は負の数、長さは負の数です
startは正の数、長さは0です 挿入操作を実行します
開始は負の数、長さは0です 挿入操作を実行します
3. ソースコードの共有
コードをコピー
パブリック静的関数 replaceStar($str, $start, $length = 0)
{
$i = 0;
$star = '';
if($start >= 0) {
En if ($ 長さ & gt; 0) {
$str_len = strlen($str);
$count = $length;
T If ($ Start & GT; = $ Str_len) {// 開始入札額が文字列の長さより大きい場合、文字列は置き換えられません
$count = 0;
}
}elseif($length
$str_len = strlen($str);
$count = abs($length);
T if ($ Start & GT; = $ Str_len) {// 開始入札額が文字列の長さより大きい場合、逆なので最後の文字の末尾から開始します
$start = $str_len - 1;
}
$offset = $start - $count + 1;//開始点の添字から数量を減算してオフセットを計算します
$count = $offset >= 0 ? abs($length) : ($start + 1);//オフセットが 0 以上の場合は、左端の点を超えていないことを意味し、 0未満の場合は、左端の点を超えていることを意味するので、開始点の左端の長さを使用します
$start = $offset &g t;= 0 ?
}else {
$str_len = strlen($str);
$count = $str_len - $start;// 交換する数量を計算します
}
}else {
En if ($ 長さ & gt; 0) {
$offset = abs($start);
}elseif($length $str_len = strlen($str);
$end = $str_len + $start;//オフセットの終了値を計算します
E $ Offset = ABS ($ Start + $ Length) -1 // オフセットは負なので計算します。
$start = $str_len - $offset;// 開始値を計算します
$start = $start >= 0 ? $start : 0;
$count = $end - $start + 1;
}else {
$str_len = strlen($str);
$count = $str_len + $start + 1;//必要なオフセットの長さを計算する
$start = 0;
}
}
while ($i $star .= '*';
$i++;
}
return substr_replace($str, $star, $start, $count);
}
コードをコピー
私はアルゴリズムが苦手なので、ここでは数式を使わずにごく一般的なロジックを使って説明します。
1. if($start >= 0) start が 0 以上 0 未満の分岐です
2. 始点のうち、長さが 0 より大きい、0 より小さい、0 に等しい 3 つの枝を作成します
3. 最後に start、count、および置換されるアスタリスク文字列を計算します。最終的に計算された start と count は両方とも正の数値です。
4. 単体テスト
コードをコピー
パブリック関数 testReplaceStar()
{
$actual = App_Util_String::replaceStar('123456789', 3, 2);
$this->assertEquals($actual, '123**6789');
$actual = App_Util_String::replaceStar('123456789', 9);
$this->assertEquals($actual, '123456789');
$actual = App_Util_String::replaceStar('123456789', 9, 2);
$this->assertEquals($actual, '123456789');
$actual = App_Util_String::replaceStar('123456789', 9, -9);
$this->assertEquals($actual, '************');
$actual = App_Util_String::replaceStar('123456789', 9, -10);
$this->assertEquals($actual, '************');
$actual = App_Util_String::replaceStar('123456789', 9, -11);
$this->assertEquals($actual, '************');
$actual = App_Util_String::replaceStar('123456789', 3);
$this->assertEquals($actual, '123******');
$actual = App_Util_String::replaceStar('123456789', 0);
$this->assertEquals($actual, '**********');
$actual = App_Util_String::replaceStar('123456789', 0, 2);
$this->assertEquals($actual, '**3456789');
$actual = App_Util_String::replaceStar('123456789', 3, -3);
$this->assertEquals($actual, '1***56789');
$actual = App_Util_String::replaceStar('123456789', 1, -5);
$this->assertEquals($actual, '**3456789');
$actual = App_Util_String::replaceStar('123456789', 3, -3);
$this->assertEquals($actual, '1***56789');
$actual = App_Util_String::replaceStar('123456789', -3, 2);
$this->assertEquals($actual, '123456**9');
$actual = App_Util_String::replaceStar('123456789', -3, 5);
$this->assertEquals($actual, '123456***');
$actual = App_Util_String::replaceStar('123456789', -1, 2);
$this->assertEquals($actual, '12345678*');
$actual = App_Util_String::replaceStar('123456789', -1, -2);
$this->assertEquals($actual, '1234567**');
$actual = App_Util_String::replaceStar('123456789', -4, -7);
$this->assertEquals($actual, '******789');
$actual = App_Util_String::replaceStar('123456789', -1, -3);
$this->assertEquals($actual, '123456***');
$actual = App_Util_String::replaceStar('123456789', -1);
$this->assertEquals($actual, '*********');
$actual = App_Util_String::replaceStar('123456789', -2);
$this->assertEquals($actual, '********9');
$actual = App_Util_String::replaceStar('123456789', -9);
$this->assertEquals($actual, '*23456789');
$actual = App_Util_String::replaceStar('123456789', -10);
$this->assertEquals($actual, '123456789');
$actual = App_Util_String::replaceStar('123456789', -10, -2);
$this->assertEquals($actual, '123456789');
}

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/871181.html技術記事 PHP は、最近のコンテンツでコンテンツの一部をスター番号に置き換えますが、特定の人の携帯電話番号の中間位置に到達する可能性があり、個人番号コードは最後の尾 4 番目の要求のみを表示します。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

iPhone で機密コンテンツの警告を有効にし、その機能について学ぶ方法 iPhone で機密コンテンツの警告を有効にし、その機能について学ぶ方法 Sep 22, 2023 pm 12:41 PM

特に過去 10 年間で、モバイル デバイスは友人や家族とコンテンツを共有する主な手段となりました。アクセスしやすく使いやすいインターフェイスと、画像やビデオをリアルタイムでキャプチャできる機能により、コンテンツの作成と共有に最適です。ただし、悪意のあるユーザーがこれらのツールを悪用して、閲覧に適しておらず、ユーザーの同意を必要としない不要な機密コンテンツを転送することは簡単です。これを防ぐために、iOS17では「センシティブコンテンツ警告」という新機能が導入されました。それとiPhoneでの使用方法を見てみましょう。新しい機密コンテンツに関する警告とは何ですか?またその仕組みは何ですか?前述したように、機密コンテンツの警告は、ユーザーが iPhone などの機密コンテンツを閲覧できないように設計された新しいプライバシーおよびセキュリティ機能です。

Microsoft Edge ブラウザーを 360 ナビゲーションで開くように変更する方法 - 360 ナビゲーションで開くように変更する方法 Microsoft Edge ブラウザーを 360 ナビゲーションで開くように変更する方法 - 360 ナビゲーションで開くように変更する方法 Mar 04, 2024 pm 01:50 PM

Microsoft Edge ブラウザーを開くページを 360 ナビゲーションに変更するにはどうすればよいですか? それは実際には非常に簡単なので、ここで Microsoft Edge ブラウザーを開くページを 360 ナビゲーションに変更する方法を共有します。見てください。皆さんのお役に立てれば幸いです。 Microsoft Edgeブラウザを開きます。以下のようなページが表示されます。右上隅にある三点アイコンをクリックします。 「設定」をクリックします。設定ページの左欄にある「起動時」をクリックします。右の列の図に示されている 3 つの点をクリックし ([新しいタブを開く] をクリックしないでください)、[編集] をクリックして URL を「0」(またはその他の意味のない数字) に変更します。次に、「保存」をクリックします。次に「」を選択します。

中国語でCheat Engineを設定するにはどうすればよいですか? Cheat Engine設定中国式方法 中国語でCheat Engineを設定するにはどうすればよいですか? Cheat Engine設定中国式方法 Mar 13, 2024 pm 04:49 PM

CheatEngine は、ゲームのメモリを編集および変更できるゲーム エディタです。しかし、デフォルトの言語は中国語以外なので、多くの友人にとって不便です。今回はCheatEngineで中国語を設定する方法を編集者が詳しく紹介しますので、お役に立てれば幸いです。設定方法 1: 1. ダブルクリックしてソフトウェアを開き、左上隅の「編集」をクリックします。 2. 次に、下のオプションリストで「設定」をクリックします。 3. 開いたウィンドウインターフェイスで、左側の列の「言語」をクリックします

Microsoft Edge でダウンロード ボタンを設定する場所 - Microsoft Edge でダウンロード ボタンを設定する方法 Microsoft Edge でダウンロード ボタンを設定する場所 - Microsoft Edge でダウンロード ボタンを設定する方法 Mar 06, 2024 am 11:49 AM

Microsoft Edge で表示されるダウンロード ボタンを設定する場所をご存知ですか? 以下では、エディターが Microsoft Edge で表示されるダウンロード ボタンを設定する方法を説明します。お役に立てば幸いです。エディターに従って学習しましょうステップ 1: まず、Microsoft Edge ブラウザを開き、下の図に示すように、右上隅にある [...] ロゴをクリックします。ステップ 2: 次の図に示すように、ポップアップ メニューで [設定] をクリックします。ステップ 3: 次に、次の図に示すように、インターフェイスの左側にある [外観] をクリックします。ステップ 4: 最後に、[ダウンロード ボタンを表示] の右側にあるボタンをクリックすると、下図に示すように、灰色から青色に変わります。上記は、エディターが Microsoft Edge でダウンロード ボタンを設定する方法を説明する場所です。

HTML で 3 つの部分を並べて配置するにはどうすればよいでしょうか? HTML で 3 つの部分を並べて配置するにはどうすればよいでしょうか? Sep 04, 2023 pm 11:21 PM

タグは HTML ドキュメントの分割を定義します。このタグは主に、スタイルを簡単に設定できるように類似したコンテンツをグループ化するために使用され、HTML 要素のコンテナとしても機能します。 CSS プロパティを使用して、HTML 内に 3 つのセクション タグを並べて配置します。 CSS プロパティ float は、この目的を達成するために使用されます。構文 以下は、<div> タグの構文です。 <divclass='division'>コンテンツ…</div>例 1 の中国語訳は次のとおりです。 例 1 以下は、CSS プロパティを使用して 3 つの部門クラスを HTML 内に並べて配置する例です。 <!DOCTYPEhtml><html><

時空の旅人アインの日常 永久コンテンツ更新 時空の旅人アインの日常 永久コンテンツ更新 Mar 01, 2024 pm 08:37 PM

「彩られた時空の旅人」は2月29日にアップデート決定 アインと一緒に野外音楽祭に参加するとアインとの好感度ボーナスが獲得できる 3月4日には「残響の休日カラータイム」イベントが開始. 、プレイヤーは休暇の旅程レベルをアップグレードして、新しいテキスト メッセージやロフター コンテンツのロックを解除できます。時空の旅人アインの日常 永久コンテンツアップデート 2月29日バージョン以降、新キャンパススケジュール【野外音楽祭参加】を体験でき、アインと一緒に参加すると好感度ボーナスが獲得可能。 3月4日9:30から4月15日05:00まで、「長期休暇・セクシータイム」イベント期間中に、[ホリデー旅程]レベルをレベル8とレベル28にアップグレードすると、それぞれ新しいテキストメッセージとロフターコンテンツのロックが解除されます。 *新しいSMSとロフターが追加されました

Solana の DEX レイアウトの分析: Jupiter はエコロジーの未来ですか? Solana の DEX レイアウトの分析: Jupiter はエコロジーの未来ですか? Mar 26, 2024 pm 02:10 PM

出典:Shenchao TechFlow Solanaエコシステムの注目度の高い新興プロジェクトとして、Jupiterは、立ち上げから間もないにもかかわらず、DeFi分野で急速に台頭してきました。しかし、このような急速に発展する環境においても、経済モデルの改善とトークン価格の安定は依然として重要です。これらのサポートがなければ、プロジェクトは容易に悪循環に陥り、最終的には衰退したり、プロジェクト自体を維持できなくなったりする可能性があります。したがって、Jupiter は、プロジェクトの長期的な発展と成功を確実にするために、経済設計を継続的に最適化し、トークン価格の安定を確保する必要があります。 Solana チェーンは過去 1 週間で好調なパフォーマンスを示し、そのトークン SOL が流通市場で急速に上昇し、Jupiter のトークン $JUP も過去 2 週間で上昇しました。

Apple の新しい iMessage セキュリティ プロトコルである PQ3 とは何ですか? Apple の新しい iMessage セキュリティ プロトコルである PQ3 とは何ですか? Feb 23, 2024 am 08:25 AM

PQ3 プロトコルとは何ですか?現在、通信セキュリティは 3 つのセキュリティ レベルで評価されています。レベル 0: このレベルでは、メッセージは暗号化されません。レベル 1: ここではメッセージはエンドツーエンドで暗号化されますが、追加の認証や量子セキュリティはありません。レベル 2: これには認証と量子セキュリティが含まれますが、それらは最初のキーの確立に限定されます。これは、量子セキュリティは、会話の鍵マテリアルが決して侵害されない場合にのみ提供できることを意味します。画像クレジット: Apple の新しい iMessage セキュリティ プロトコル PQ3 は、Apple が「レベル 3 セキュリティ」と呼ぶものを達成すると認められた最初のメッセージング プロトコルです。このプロトコルは量子暗号化テクノロジーを使用して、キーの生成とメッセージ交換を保護します。たとえ鍵が漏洩したとしても、レベル 3 PQC は

See all articles