複数の配列をまとめて昇順で表示する方法とは?

このQ&Aのポイント
  • 複数の配列を一つにまとめて昇順で表示する方法について説明します。
  • 配列$matches1には商品番号が入り、配列$matches2には商品名が入っています。
  • 商品番号を昇順にソートして、商品番号と商品名を表示することができます。
回答を見る
  • ベストアンサー

複数の配列をまとめて昇順で表示

//商品番号 $pattern1 = "/<b><font color=\"#000000\">(.*)<\/font><\/b>/"; //商品番号(ランダム) preg_match_all($pattern1, $homepage, $matches1); //商品名 $pattern2 = "/<font size=\"2\"><a href=\".*\">(.*)<\/a><\/font>/"; //商品名 preg_match_all($pattern2, $homepage, $matches2); 上記のように、$matches1には商品番号がで$matches2には商品名のデータが入っています。 商品番号:$matches1[1][0] の商品は$matches2[1][0]になります。 商品番号の順番は昇順ではなくユニークな数値がランダムで入っています。 これをひとつの配列にまとめて、商品番号ソートをかけて表示したいのですが。 最終的な表示は 商品番号:商品名 001:りんご 002:バナナ 003:メロン よろしくお願いします。

  • PHP
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
回答No.1

関連するQ&A

  • PHPでURLのソースの中から数字の文字列を検索したいのですが

    PHPでURLのソースの中から数字の文字列を検索したいのですが <?php $str = 85%80%78%77%70%60%; $pattern="/[0-9]+(?=%)/u"; mb_internal_encoding("UTF-8"); preg_match_all($pattern,$str,$matches); foreach((array) $matches[0] as $val) { print mb_convert_kana($val,"a")."<br>\n"; //半角にして表示 } ?> この記述で、文字列から80%のような 全角文字で%の前の文字だけを抜き出せました。 そこでURLからデーターを抜き出すべく ////////ソース////// <table> <TR> <TD>あ</TD> <TD><B>88%</B>/TD> </TR> <TR> <TD>す</TD> <TD><B>85%</B>/TD> </TR> ........... </table> 下記のように記述しましたが <?php $html_data = file_get_contents("http://www.1234.com/1234.html"); if (preg_match("/<table\s.*>([\s\S]*)<\/table>/i",$contents,$matches)){ $contents = $matches[1]; } $str = $html_data; $pattern="/[0-9]+(?=%)/u"; mb_internal_encoding("UTF-8"); preg_match_all($pattern,$str,$matches); foreach((array) $matches[0] as $val) { print mb_convert_kana($val,"a")."<br>\n"; //半角にして表示 } ?> しかし、動作しません。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHP 複数行の正規表現

    複数行にわたる正規表現についてです。 mオプションを使うとありますが、うまくいきません。 [改行が無い場合] $val=$pattern_url="/<a>(.*?)<\/a>/m"; preg_match_all($pattern_url,"<a>ABCD</a>",$match_url,PREG_SET_ORDER); だと 1 ABCD が出力されます。 [改行がある場合] $val=$pattern_url="/<a>(.*?)<\/a>/m"; preg_match_all($pattern_url, "<a>AB CD</a>", $match_url,PREG_SET_ORDER); 出力結果は 0 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • ページ全体の特定語句の抽出の正規表現について

    このジャンルでお願いします。 このページの http://eow.alc.co.jp/study/UTF-8/ 変化形 : から 分節stud・y までの間のそれぞれの語句を抽出したいのですが、 例えば、「変化形 :」や「発音」の部分なら次のような正規表現で一応抽出はできたのですが、 preg_match_all('/"\)\'>([a-z]+)<\/a>/', $str, $matches); print_r($matches); preg_match('/"pron">([^<]+)<\/span>/', $str, $matches); print_r($matches); その間の「【名】」「【自動】」「【他動】」の間にある語句などの抽出方法が思い浮かばないのですが、 どう記述すれば良いのかアドバイスを頂けないでしょうか?

    • ベストアンサー
    • PHP
  • 画像の置換え

    プログラム初心者です 番号と画像拡張子を簡単な正規表現で表す方法をおしえてください 拡張子はgif、png、jpgの拡張子です 番号は桁数も番号も変わります。この三パターンにマッチするテキストを置き換えたいです 例 56.gif 100.gif 6.png 6549.png 79169.jpg 35.jpg $pattern="/(\d+)/"; $replacement="<a href=\"$0\">$0</a>"; if(preg_match($pattern,$mes,$matches) ){ $mes=preg_replace($pattern,$replacement,$mes); } よろしくお願いします

    • ベストアンサー
    • PHP
  • htmlソースからタグ内のテキストを配列に2

    お世話になっております。 昨日も同じような質問をさせていただいたのですが、htmlファイルの内容をPOSTで取得したとき、そのソース内にある、javascript、noscriptがあった場合、それぞれのタグ内にあるURLを配列内に取り込みたいと考えております。 そこで、これまで試していたものはもちろん、先日お教えいただいた以下のソースを参考にしているのですが、URLを取得するまでに至りません。 <?php $html=<<<_HTML_ <SCRIPT TYPE="text/javascript" SRC="http://www.○○○.com" charset="EUC-JP"></SCRIPT> <NOSCRIPT> <div align="center" style="font-size:12px;"> <a href=http://www.△△△.net/>カウンター</a> <a href=http://www.□□□.com/>アクセス解析</a> </div> </NOSCRIPT> _HTML_; $pattern_java = '/<SCRIPT TYPE= .*?SRC="(.*?)".*?>>/is'; $match_java = array(); preg_match_all($pattern_java, $html, $match_java, PREG_SET_ORDER); $meta_java = $match_java[0][1]; $cnt_java = count($match_java); ?> 2日続けて同じような質問をすることに恐縮するとともに、お恥ずかしいことと自覚はしているものの、解決策が見いだせずに困っています。 お忙しいなか恐縮ですが、アドバイスなど頂戴出来れば幸いです。 宜しくお願い申し上げます。

    • ベストアンサー
    • PHP
  • preg_replace_callback が渡す変数の扱い

    preg_replcace_callback を使用して、<a>タグ内のURLの字数を制御するコードに取り組んでいます。詳しい方アドバイスしてくださると助かります。 下のコードの、shorten(カスタム関数)に渡されるデータが配列なのですが、並列に並んだ配列のようなのです。echo をかけてみると、ArrayArray と表示されます。しかし、Array([0]=>Array [1]=>Array) ではないので、どうやって 処理をかけて return すればよいのか途方にくれています。 もしよい方法をご存知の方おられましたらどうぞよろしくお願いいたします。 <? $str = <<<HERE //長いURLのサンプルです。ここの掲示板の処理で途中で表示がカットされていますが、<a href="http://長いURL">http://長いURL</a>という構成になっています。 <a href="http://gooooooooooooooooooooooooooooooooooogle.co.jp">http://gooooooooooooooooooooooooooooooooooogle.co.jp[</a> <a href="http://yahooooooooooooooooooooooooooooooooooo.co.jp">http://yahooooooooooooooooooooooooooooooooooo.co.jp</a> HERE; $pattern = "#<a(.*?)>(.*?)<\/a>#s"; $str = preg_replace_callback($pattern, 'shorten', $str); echo $str; function shorten($matches) { foreach($matches as $index => $match) { if (strlen($match) > 20) { $matches[$index] = substr($match, 0, 20) . '....'; } } return $matches; } ?>

    • ベストアンサー
    • PHP
  • カンマ区切りの金額を検索するための、正規表現を教えてください

    PHP4を使っています。 表題のとおりなのですが、 カンマ区切りの金額を検索するための、正規表現を教えていただけないでしょうか? http://oraclesqlpuzzle.hp.infoseek.co.jp/regex/regex-3-14.html を参考に、 $pattern = '^(0|([1-9][0-9]{0,2}(,[0-9]{3}){0,2}))$'; if (preg_match("/$pattern/", $oneline_buffer, $matches)){ としているのですが、 なぜかpreg_matchにひっかかりません。 (preg_match の直前の行を通っていることは、確認済みです) どなたか、お助け願えれば幸いです。

    • ベストアンサー
    • PHP
  • 文字列の比較と取得

    取得した文字列 $moji には以下のような郵便番号と住所が入っています。 111-2222 北海道 225-3535 東京 333-4545 沖縄 現在は以下の処理です。 if (preg_match(\"/北海道/\", \$moji)) { echo \"<font color=blue >寒い</font>\";} if (preg_match(\"/東京/\" , \$moji)) { echo \"<font color=green>首都</font>\";} if (preg_match(\"/沖縄/\" , \$moji)) { echo \"<font color=red >熱い</font>\";} 受け取った文字列が「東京」の時は上記から緑色の文字で「首都」と表示しています。 これを郵便番号「225-3535」で受け取った時にも同じように表示したいのですが上手くいきません。 未熟者でも解るように教えて頂ければ助かります。よろしくお願いします。

    • 締切済み
    • PHP
  • セルデータの結合で昇順表示とするには

    ランダムにデータが入っている表があり、特定列のセルを結合し、かつ昇順となるように表示するには下記の式になにを加えたら良いですか? A B C ん あ う とあるとき、=A&B&C と入れ下方へドラッグしますが、「んあう」ではなく「あうん」と表示されるようにしたいのですが、左から昇順に表示させるための数式はどのようになりますか? この下の行には、「あ、い、う」とか「を、わ、あ」とかが入っていて =B&C&A としても下方行では機能しないので思案しております。

  • preg_matchで複数一致した場合の処理

    いつも大変お世話になっております。 「Twitpic 等の画像投稿サービスのサムネイル画像の URL」 http://blog.irons.jp/2009/12/23/twitter_thumb_url/ 上記のサイトをそのまま参考にしまして以下のようなことをしようと思っています。 ・テキストに画像サービスのURLが記載されていたらサムネイル画像を表示 ・普通のURLが含まれていた場合は普通のリンクとして表示 ―――――――――――――――――――― $text = "テキスト http://twitpic.com/xxxxxx http://twitpic.com/yyyyyy http://p.twipple.jp/zzzzzz http://example.com/aaaaaa"; $patterns = array( // twitpic array('/http:\/\/twitpic[.]com\/(\w+)/', '<img src="http://twitpic.com/show/thumb/$1" width="150" height="150" />'), // ついっぷる フォト array('/http:\/\/p[.]twipple[.]jp\/([\w]+)/', '<img src="http://p.twipple.jp/show/large/$1" />'), // 通常URL array('/((?<!")https?:\/\/[a-zA-Z0-9\.\/~_?&=%@#!;*:-]+)/', '$1'), ); foreach ($patterns as $pattern) { if (preg_match($pattern[0], $text, $matches)) { $url = $matches[0]; $text= preg_replace($pattern[0], '<a href="'. $url .'" target="_blank">'.$pattern[1]."</a> ", $text); } } echo $text; ―――――――――――――――――――― これを実施しましたところ、 テキスト [twitpic画像xxxxxx] [twitpic画像yyyyyy] [ついっぷる画像zzzzzz] [通常URLのリンクaaaaa] と、表示自体は希望している形に出来ました。 しかし、[twitpic画像yyyyyy]の部分において、画像はyyyyyyが表示されているのですが、リンク先がhttp://twitpic.com/xxxxxxと、一つ目の画像になってしまっているのです。 おそらく、preg_matchでヒットした最初のURLを変換対象にしてしまっていると思うのですが、 preg_match_allにしたり、様々なやり方で工夫したのですが、どうしても解決できなく、質問させて頂きました。 この場合、2つ目の画像のリンク先をhttp://twitpic.com/yyyyyy へ向けるにはどのように修正したらよろしいでしょうか。 何卒宜しくお願い致します。

    • ベストアンサー
    • PHP

専門家に質問してみよう