2013年11月29日金曜日

Stristr 指定文字以降の文字列を取得 PHP

指定の文字以降を取得、指定の文字列以降を取得、指定の日本語以降

stristrは、文字列の中から指定の文字以降を抜き出します。

【今回の目的】
とあるページから店舗名などの情報だけを抜き取りたい

file_get_contents()で、htmlソースを取得。

ここから文字取得の編集にてこずる。
str系の関数がPHPにはたくさん用意されているが逆引きなどではあまり詳しく説明していないので、ウェブの同士にに頼ることに

【結果】
店舗情報は「■店舗名」以降に決まった法則に従って記述されている。きっとDBから呼び出していることが予想できる。


header("content-type: text/plain; charset=UTF8");//文字コード

$f = file_get_contents("http://site.com?id=店舗id"); //

echo stristr($f, "■店舗名");


これでsite.com?id=16ページの「■店舗名」以降を取得。


そして、必要事項だけを抜出して連想配列にする。


<?php
header("content-type: text/plain; charset=UTF8");

$st = file_get_contents("http://site.com?id=16");// 必要なページのhtml取得
$st = str_replace("&nbsp;","",$st);// 不要な記号削除
$str = stristr($st, "■店舗名");// 連想配列の起点0を「■店舗名」に調整する。

$rep = array('【店舗情報】', '■店舗名', '『', '』', '■取扱募集代理店', '■所在地', '■電 話', '■開店日', '■営業時間', '■対応コース', '<br>', "\r", "\n");//連想配列の基本(タイトル作る)

$arr = array();//空箱を作る
$str = str_replace($rep, "\t", $str);//タブ区切り "\t"  カンマ区切り ","

//explode関数は文字列を文字または文字列で分割し配列にして返します。以下に使用例を示します。
foreach (explode("\t", $str) as $val) { if ($val !== '') $arr[] = $val; }

print '<pre>';
print_r($arr);
print '</pre>';
?>

それで、出てくるのが

<pre>Array
(
    [0] => 保険代理店A
    [1] => 東京中央店
    [2] => 株式会社ほけんプラプラ
    [3] => 東京中央区2-2 田中ビル5F
    [4] => 0120-00-0200
    [5] => 2013年3月1日
    [6] => 10:00~18:00
    [7] => ■定休日なし
    [8] => 来店
    [9] => ■URL
    [10] => <a href="http://site.com?id=16">http://site.com?id=16</a>
    [11] => </p>


ここまでくればあとはSQL文に編集してfunctionで必要なid分だけfor or foreachなんかで取得してしまおうってことです。

0 件のコメント:

コメントを投稿