-1

ここに私が持っている配列があります

var_dump($arr);
// prints below array
[0] => Array
        (
            [title] => Lee Daniels' The Butler (2013)
        )

中かっこと一緒に年を削除し、スペース (" ") をアンダースコア ("_") に置き換えてから、それを urlencode したいと考えています。したがって、望ましい出力は

Lee_Daniels%27_The_Butler

これが私のコードです:

$url = preg_replace('/\((\d){4}\)/', '', $arr[0]['title']);

$title = str_replace(" ","_", trim($url));
$title = urlencode($title); // tried with urlencode(addslashes($title));
echo $title; // prints Lee_Daniels'_The_Butler

echo urlencode('\'') が「%27」を返すことを知っているため、addslashes を試しましたが、役に立ちませんでした。

更新: それはうまく動作します

preg_replace('/\((\d){4}\)/', '', "Lee Daniels' The Butler (2013)");

ただし、次のように str を直接フェッチする場合:

include_once('simple_html_dom.php');

$url = 'http://www.imdb.com/chart/';
$main_content = file_get_html($url);

$table = $main_content->find('table', 0);
$tbody = $table->find('tbody', 0);

$trs = $tbody->find('tr');
foreach ($trs as $tr) {
    $tds = $tr->find('td');
    $movies = "";

    $movies['title'] = trim($tds[2]->plaintext);

    $arr[] = $movies;
}

$url = preg_replace('/\((\d){4}\)/', '', $arr[0]['title']);

$title = str_replace(" ","_", trim($url));
$title = urlencode($title);
echo $title;

これを複製するには、単純な html dom パーサーを php に含めてください。

誰かが私が欠けているものを親切に指摘できますか?

4

1 に答える 1

0

作業コードは次のとおりです。

include_once('simple_html_dom.php');

$url = 'http://www.imdb.com/chart/';
$main_content = file_get_html($url);

$table = $main_content->find('table', 0);
$tbody = $table->find('tbody', 0);

$trs = $tbody->find('tr');
foreach ($trs as $tr) {
    $tds = $tr->find('td');
    $movies = "";

    $movies['title'] = trim($tds[2]->plaintext);

    $arr[] = $movies;
}

$title = html_entity_decode($arr[0]['title'], ENT_QUOTES, 'UTF-8');
$title = trim(preg_replace('/\((\d){4}\)/', '', $title));
$title = str_replace(" ", "_", $title);
$title = urlencode($title);

echo $title;

スクリーン スクレイピングは IMDB の利用規約に違反していることに注意してください。これは学習目的のためだけです。

于 2013-09-03T05:21:47.657 に答える