ホームページ > バックエンド開発 > PHPチュートリアル > PHP WeChat 公開開発ノート (7)_PHP チュートリアル

PHP WeChat 公開開発ノート (7)_PHP チュートリアル

WBOY
リリース: 2016-07-13 10:19:03
オリジナル
1058 人が閲覧しました

PHP WeChat 公開開発ノート (7)

PHP WeChat 公開開発ノート シリーズ
日付: 2014.9.6

この日記は昨日を補うためのものです、昨日は書く時間がありませんでした
;
主に実装された機能:あいまい検索、質疑応答システム、ヘルプシステム
修正: _SESSION ID
検証メカニズムを調整しました

注意すべき点: mysql の構文の問題、mysql のあいまい一致、および PHP の連想配列は、count を使用して計算すると、元のデータの 2 倍の大きさになるように見えます (つまり、配列には 2 つのデータしかなく、count は 4 になります。これは)再度確認したところ、この問題は foreach を使用するときに発生したようです)

学習: PHP の配列操作

2014.9.10 メモの整理:
このメモを書いているとき、私はある機能に取り組んでいたので、そのときの作業についていくつかメモしただけです。機能がほぼ開発されたので、以前のメモを整理します。その時は上記の文章をただ記録しただけです。
その日、通勤途中にクラスメイトが、希望する機能は、特定の都市の名前を入力して、その都市のクラスメートに関する情報を取得することだと言ったのを覚えています。実はこの機能は、私が当初この WeChat 公開アカウントで実現したかったことであり、情報検索を簡単に実行できるようにするためのものです。ただし、現段階では歩き回っている人は多くないかもしれませんし、その必要性もありません。しかし、偶然も否定できないので、私はこのアイデアを思いつきました。

あいまい検索:
あいまい検索の場合、基本的にはデータベース検索に基づいており、サービス デスク プログラムがこのキーワードを取得できるようにする必要があります。たとえば、情報を表示する場合は、これを表示するように設定します。広州、「広州を見る」と返信してください。
具体的な実装:
1 つ目は、注 6 で説明したものと似ています。これは、strstr と str_replace という 2 つの文字列処理関数を使用して、ユーザーが入力した情報を処理することに他なりません。初めに、データベース内であいまい検索を実行できるかどうかを考えます。それが機能しない場合は、まずすべての情報を取得してから比較します。
オプション 1、データベース上のあいまい一致: オンラインで見つけた情報には、あいまい検索がサポートされていることが示されていますが、数時間試しましたが、このあいまい検索の理解が間違っているかどうかはわかりません。

1. select from xxx (データテーブル名) where xxx (field) like xxx (取得したいもの) この構文は、指定されたデータテーブルから対応するフィールド値を取得できるというものです。見つけられる情報。しかし、ここで行う必要があるのは複数フィールドの表示です。つまり、データ テーブルには州、市などのフィールド情報が含まれています。これらのフィールドのあいまい一致を行う必要があるため、情報を再度確認し始めました ;
2. select from xxx where concat('field_a','field_b','field_c') like xxx 、ここで concat は複数のフィールドを結合してファジーマッチングを行うことと同じです。 3.
select from xxx where xxx.colum_name like xxx 。これもフィールド名が data table.colum_name に変更されていますが、それでも役に立ちません。 具体的には、私が出力した情報によると、情報は mysql_query を使用して取得されましたが、結果が mysql_fetch_assoc または mysql_fetch_array で処理された後、対応する配列が取得されなかったという状況です。ネチズンの意見によると、後者のあいまい一致情報は、漢字の場合は %retrieval% の形式で記述する必要があります。つまり、両側にパーセント記号が必要です。 ここでは私のニーズには当てはまりませんが、データベースをうまく運用したい場合は、MySQL の操作マニュアルをよく読む必要があると感じています。
オプション 2: 情報を取得して、照合して比較します

このソリューションは非常にシンプルで実装が簡単であると言えます。実際、私も最初にファジー検索が必要になったときにこの方法を考えました。しかし、まずデータベースから情報を取得するにはデータベースにアクセスして取得する必要があり、比較に時間がかかるため、パフォーマンスに影響する可能性があると考え、解決策がないかネットで検索しようと考えました。しかし、事態は期待に反し、期待に応えられませんでした。これは将来に委ねられます。 この解決策は非常に簡単で、最初にすべての情報を取得してから比較するだけです。ここでは比較を非常に簡単にするために PHP 配列の演算関数が使用されています: in_array(); 特定の値が配列内にあるかどうかを判断します。データベースから取得した情報は PHP で配列に処理されるため、広州という単語を検索するときは、その配列に広州という単語が出現するかどうかを判断するだけで済むため、比較的簡単です。私がそれを実装した方法は次のとおりです:

PHP WeChat 公開開発ノート (7)_PHP チュートリアルvcv509C1xNDFz6KjrMi7uvPRrbu31eK49rb+zqzK/dfpo6zDv7TO0a27t7XDtb3Su7j2yv3X6dDFz6KjrMi7uvPIpbj6ztLDx9KqvOzL97XEJiMyMDU0MDvIpbbUscijrMal xeS1vcHLvs29q9XiuPbK/dfpt8W1vc7Sw8e1xL3hufvK/dfp1tDIpaOsyLu689TauvPD5rXEstnX99bQ1/a94bn7tKbA7b7Nv8nS1MHLoaM8YnI+CtLytMu52NPaxKO6/bzsy/fV4rj2uab E3LXjvs3V4tH5yrXP1sHLoaM8YnI+Cjxicj4KPHN0cm9uZz7OyrTwz7XNs6O6PC9zdHJvbmc+PGJyPgrU2rm5y7zEo7r9vOzL97XEyrG68qOsztLSss/ro6zKx7fxxNzFqrj2u abE3MC0sO/W+s2s0ae72NLku9jS5LTz0ae1xLarzveho9PQwcvV4rj2z+u3qNauuvOjrM7Sub nLvMHL0ru49r3Q1/bOyrTwtcS5psTco6y8tNPDu6e72Li0zsq08KOsz7XNs77Nt7W72NK7uPb OysziyMPTw7unyKW72LTwoaPV4tCpzsrM4ra8yse52NPatPPRp8n6u+61xKOsyOfRp7rF1q7A4LXEoaM8YnI+CtPQwcvV4rj2z+u3qNauuvOjrLHjv6rKvNfFytbKtc/WwcujrNLyzqrO 0s/rtb278tDt0tS689XiuPa5psTcu+HT0MCp1bmjrMv50tTO0tLU0ru49sDgwLTKtc/Wo6zO0rPG1q7Oqs7S1eK49s+1zbO1xNK7uPbEo7 /po6yx49PazbPSu7ncwO2hozxicj4Kvt/M5bXEyrXP1rrcvPK1paOsvs3Kx9Ta08O7p7vYuLShsM7KtPChsbXEyrG68qOs08MkX1NFU1NJT068x8K80rvPwtPDu6e/qsb0wcvOyrT wxKO/6aOsyLu689PDu6e1xM/C0ruyvbvYuLTQxc+ivs3Kx7vYtPDE2sjdwcujrLvYtPCyu7ncs 8m5psqnsNy2vMfls/219CRfU0VTU0lPTrnY09rTw7unv6rG9M7KtPDEo7/ptcTQxc+ioaO40L7 11eLR+cq1z9a1w9PQteO88rWltNaxqaOsuf65/qGjPGJyPgq+38zlyrXP1rrcvPK1paOsvLi69cO709DF9rW9uty087XEzsrM4qOsy/nS1LK7zOG+38zlyrXP1sHLoaM8YnI+Cjxic j4KPHN0cm9uZz6w79b6z7XNs6O6PC9zdHJvbmc+PGJyPgo8cD6w79b6z7XNs87StcS5uc/rysejrMzhuanN5tXiuPa5q9bausW1xL3Ms8yjrLywvPK1pbXEuPzQwsjV1r65psTcoaPP67W9 0qrFqtXiw7S24KOsxMfDtNTZu9i4tM7Esb7Qxc+iv8+2qL7NsrvMq7rDwcujrMv50tS+zdDo0qq72Li0zbzOxMG0vdPBy6GjzbzOxMG0vdO1xLvYuLTU2rnZt721xL+qt6LOxLW11t C+zdPQvt/M5bXEy7XD98HLo6zO0r+0tb3N+NPRtcS3vbeoo6y9q8TH0ru087SueG1stK631r3iv6rAtLSmwO2jrM7S0rK4 +tfF1eLDtNf2wcujujwvcD4KPHA+PGltZyBzcmM9"http://www.2cto.com/uploadfile/Collfiles/20140912/2014091209043527.png" alt="">


配列を渡して処理することで、画像やテキストのリンクに簡単に返信できます。
クリック後にジャンプするリンクについて話しましょう:
というのは、そのリンクの取得方法が全くわからなかったので(まったく分かりませんでした)、それからそれはファイルであるはずだと思い、このリンクはファイルの保存先アドレスでした。次に、PHP でファイルを作成し、それを SAE Storage に配置し、このリンクをここに配置してテストしたところ、結果は次のようになりました。
よくウェブを閲覧すると、ほとんどのウェブページが html であることがわかるので、html ファイルを生成する方法、オンラインで検索して html ファイルを生成する方法、オンラインでウェブページを生成して html として保存する方法を考えます。 Word で編集し、再び Dreamweaver を使用して家に戻ります。その後、HTML ファイルが生成されましたが、携帯電話での閲覧のニーズにはあまり応えられませんでした。Web ページとしてはまったく見えませんでした。 Webデザイン インターネット上にはテンプレート素材がたくさんあります。
その後、パブリック プラットフォームのマテリアル ライブラリでクラスメートが作成したいくつかのドキュメントを偶然見て、このマテリアル ライブラリを直接使用して、使いたいヘルプ ドキュメントを処理し、その内容で新しいマテリアルを直接作成できないかと考えました。その内容はヘルプドキュメントの情報です。そう言ってすぐに、新しく作成した資料に直接書いたヘルプ文書を追加して保存し、効果をテストしました。携帯電話で開いた Web ページのような効果が得られ、非常に満足しています。私は強迫性障害気味なので、いつもフォーマットを調整しなければならず、その日は終わるまで12時近くまで忙しかったです。その日は金曜日だったので、編集したのは8時近くでした。借家に戻り、帰ってからちょっと片付けて、それから12時くらいまで忙しかった。疲れましたが、とても幸せでした。

PHP に関する注意:
1. 今日の開発中に問題が発生しました。$_SESSION に問題がありました。保存された情報はすべてのユーザーがアクセスできます。当時、インターネット上で情報を検索する際には、各ユーザーが取得する情報にばらつきを持たせるために、IDを設定する、つまりユーザー固有の情報を利用してIDを設定する必要がありました。各ユーザーが取得した情報に一貫性がありませんでした:
session_id() この関数を使用して ID を設定します
WeChat公式アカウントで取得した受信情報には、メッセージを送信したユーザーを表すメッセージが含まれており、これをIDとして使用して値を一意にできるため、ユーザーの情報を元にIDを設定したのですが、何か問題が発生しました後は間違ってます。最初はこのメカニズムに問題があり、使い方が間違っているのではないかと思いました。したがって、関数の呼び出し順序が調整されました:
元々は
でした session_id();
session_start();
この呼び出し順序では、順番が間違っているのではないかと思い、順番を変更しましたが、結果はやはり間違っていました。後で自分が設定したIDをよく見てみたら、ユーザー情報を間違って書いていたことが分かり、本当に不注意で人を死なせてしまったのです。
WeChatサーバーから取得するユーザー情報は以下の通りです:
$postObj->Fromユーザー名
そして私はそれを次のように使用します $postObj->fromUserName
しかし、私はそれを見つけることができませんでした。 。 。えー。 。 。
2.PHP 配列:
連想配列を使用する場合、foreach を使用してループすると、ループ数はカウント サイズの 2 倍になります。あいまい検索を行っているときにこの問題が発生しました。その時はin_arrayを使ってマッチングを行わず、ループ配列を使ってマッチングを行ったのですが、ネットで調べた情報によると、連想配列はforeachを使ってマッチングを行うので、キーの値も取得できるとのことです。 、このループの数は配列のサイズの 2 倍です。キーを出力すると、関連するキーと数値キーの両方が出力されたことがわかりました。つまり、最初に数字キーが印刷され、2 回目に対応する関連キーが印刷されると、同じ要素が 2 回印刷されます。したがって、マッチングを行うと、2 つの同一の配列が得られます。私の使い方に何か問題があるのか​​分かりません。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/879184.html技術記事 PHP WeChat 公開開発ノート (7) PHP WeChat 公開開発ノート シリーズ 日付: 2014.9.6 昨日は時間がなくて書けなかったので、その埋め合わせをする日記です 主な実装機能:あいまい検索、質問.. .
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート