• ベストアンサー

先頭のTHE、A などを無視してソート

PHP+Mysqlでデータベースを利用しています。 質問タイトルの通り、 データベースの内容を表示する際、 ソートをするときに 先頭のTheやAといった文字列を無視してソートしたいのですが、 どのようにすればいいのでしょうか? 例: Apple The Bear Candle A Duck よろしくご教授下さい。

  • MySQL
  • 回答数1
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

usortとかどうでしょ? <? $words=Array("Apple","The Bear","Candle","A Duck"); shuffle($words); //シャッフル print "<pre>"; print_r($words); print "</pre>"; usort($words, "cmp"); //指定ソート print "<pre>"; print_r($words); print "</pre>"; function cmp($a, $b){ $a=preg_replace("/^a |^the /i","",$a); $b=preg_replace("/^a |^the /i","",$b); if ($a==$b){ return 0; } return ($a < $b) ? -1 : 1; } ?> http://www.php.net/manual/ja/function.usort.php

関連するQ&A

  • ソートについて

    オラクルのデータベースで半角英数字、半角スペース、 半角記号が混ざった文字列に定義された列があって、 その列をうまくソートする方法はありますか? (例) 桁数は3桁、半角スペースは[_]アンダースコアであらわすとして 05 1_ a_ 18 2_ 1a ↓ 1_ 1a 2_ 05 18 a_ よろしくおねがいします。

  • MySQLで先頭の0が省略されてしまう

    こんにちは、 Mysqlで、例えば"023"という数字をデータベースへinsertした場合、 先頭の"0"が省略されてしまい、"23"となって格納されてしまいます。 データ型はint、textを試しましたが結果は同じでした。 検索してもいまいちこれといった情報が見つからず、 教えていただきたいと思っています。 簡単ではありますが、どうかよろしくお願いします。 環境:windowsOS    xampp 1.7.1 php5を使ってMysqlを操作しております。

    • ベストアンサー
    • MySQL
  • 検索のソートについて

    以前phpのカテゴリ内で以下のようなQ&Aをみつけましたが、まったく同じ状況で使用する言語がperlの場合どのようにすればいいのでしょうか?どなたか教えて下さい。 "PHP+MySQLを勉強中です。 例えば、商品テーブルに商品ID、商品名、価格、在庫数の4つのフィールドがあって、その表の各名称をクリックするとソート(例:オークションなどで現在価格をクリックするとソートなど[select * from 商品 order by 価格 asc])できるスクリプトをどのように作成すればよいか教えて下さい。" "shohin.phpで商品一覧を表示するとして、フィールド各名称のリンクを <a href="shohin.php?sort=1">商品ID</a><a href="shohin.php?sort=2">商品名</a>・・・ のようにします。" あとはswitch文を使ってget値(sort=の値)別にクエリーを変えるだけです。

    • ベストアンサー
    • Perl
  • MySQLのソートについて

    こんにちわ。 今PHPとMySQLでデータベースの練習をしています。日本語をソートすると変な順番にソートされてしまいます。 SELECT * FROM NAME_T ORDER BY NAME_KANA_C NAME_KANA_Cには名前が全角カナで入力されてます。 これでソートしますと、 テ*** ハ*** ヒ*** フ*** ときて、なぜか シ*** となります。これは何故なんでしょうか? よろしくお願いします。 文字コードはEUCです。

  • DB内にあるデーターのソート

    こんばんわ。 以下の件について、どなたがサンプルソースを交えてご教授下さい。 環境: windows Apache2 + PHP5 + MySQL データーベースにある、2つのフィールドを対象にして データーをソートして表示させたいのですが、なにかいい方法はありませんか。 例 対象データベース↓ id name point item 1 user1 340 item1 2 user2 540 item1 3 user3 210 item2 4 user4 319 item2 5 user5 233 item3 このデータベースを読み込み、以下の様にソートし表示したいのです。 ◇item1 user2:540 user1:340 ◇item2 user4:319 user3:210 ◇item3 user5:233 ※item欄にあるデーター毎に、pointの高い数値に並び替える。 以上、よろしくお願いします。

    • 締切済み
    • PHP
  • Excel 2000でソートさせようとすると・・・

    何時も皆さんの明確な回答感心するばかりです。  質問ですが、Excel2000で住所録を作りました。同窓会用なので1つのブックに3枚のシートがあり、それを増やして6枚にして1組から6組までとしました。各シートの1列目に名前、〒、住所、電話、メルアド、てな感じで入力してその下に各人をどんどん入れていきました。ここまでは良かったんですが、各項目でソートをかけたところ2枚目(2組)だけはどんなにソートをかけても1列目はソートされないのに、他のシートは1列目まで一緒にソートされてしまいます。 色々本を見たり会社の得意そうな人に聞いたりしてみましたが、答えが返ってきません。自分なりにいじって見た所、データ→並べ替え、と見ると2枚目は範囲の先頭行がタイトル行に2枚目以外は範囲の先頭行がデータにチェックが入っています。これを換えてOKとするのですが保存されない様で又すぐもとに戻ってしまいます。(表現は正しいのかな?) おそらくこれが原因だと思うのですがどう直すのか、はたまた私がヘンなことしているのかよく解りません。どのシートも同じように造ったつもりなんですがどなたか、教えて下さい。ヘ(x_x;)ヘ

  • ACCESSレポートのソートに関して

    ソートに関して教えて下さい。 現在、レポート出力である帳票を作成していますが、その際のソート順として ある項目の何文字目からをキーとしてソートしたいと考えています。 というのも、ある番号の先頭にアルファベットが存在し、アルファベット+連番という 形となっている為、そのアルファベットを無視して連番だけでソートしたいと考えています。 Oracle等のデータベースで、SQLを用いて取得するような時は、実現できるかと 思われますが、ACCESSのレポートではそのような機能は存在しますでしょうか? 初歩的な質問で申し訳ありませんが、教えて下さい。 よろしくお願いします。

  • 連想二次元配列のUNIXTIMEでのソート

    ID(主キー)、unixtime、nameをフィールド名とするとするSQLのデータベースを取得してUNIXTIMEを比較してソートするようなPHPを作りました。   $contents= array(); $temp = mysql_query($query, $link ); while( $contents = mysql_fetch_array($temp, MYSQL_ASSOC)){ } //比較してソート function cmp($a, $b) { print_r($a); if ($a["unixtime"] == $b["unixtime"]) { return 0; } return ((int)$a["unixtime"] < (int)$b["unixtime"]) ? 1 : -1; } usort($contents, "cmp"); しかしこれを実行したところ、 Warning: usort() expects parameter 1 to be array, boolean given in C:\xampp\htdocs\php\outstr.php on line 49 となってしまいます。 usortのエラーのようですが、なぜこうなってしまうのでしょうか。 正常にソートできるような方法を教えてください。

    • ベストアンサー
    • PHP
  • エクセルの先頭の’(アポストロフィー)

    タイトルの通り、エクセルを使用していて、セルの先頭(1文字目)に ’(アポストロフィー)を入れると、セルの書式設定で「文字列」を 選択していても無視されてしまいます。 どうしても先頭に’を表示させたいのですが、どうすればよいのでしょうか?

  • 複数列でのソート

    MySQL4.0で、2つのカラムを比較してソートをしたいと考えています。 cat dog ================== 3   12 ------------> 3 5 2 ------------> 2 7 15 ------------> 7 16 9 ------------> 9 というテーブルがあり、cat列もしくはdog列を比較してどちらか小さい値をキーにしてソートさせたいのです。 上の例だとこんな感じに結果を得たいのですが。。。。 cat dog ================== 5 2 ------------> 2 3 12 ------------> 3 7 15 ------------> 7 16 9 ------------> 9 一度結果セットを配列にいれて、プログラム側で再度ソートをかけようかなと思っていたのですが、できればSQLの側でできないものかと考えています。4.1以降であれば、サブクエリを使ってなんとかできそうなのですが、4.0なので方法がぜんぜん思い浮かびません。どのようにSQLを書けばいいのでしょうか??

    • ベストアンサー
    • MySQL