ここでは、URL のプレビューを作成しています。どのショー
- URL タイトル
- URL の説明 (タイトルは入れないでください)
これが私の試みです。
<?php
function plaintext($html)
{
$plaintext = preg_replace('#([<]title)(.*)([<]/title[>])#', ' ', $html);
// remove title
//$plaintext = preg_match('#<title>(.*?)</title>#', $html);
// remove comments and any content found in the the comment area (strip_tags only removes the actual tags).
$plaintext = preg_replace('#<!--.*?-->#s', '', $plaintext);
// put a space between list items (strip_tags just removes the tags).
$plaintext = preg_replace('#</li>#', ' </li>', $plaintext);
// remove all script and style tags
$plaintext = preg_replace('#<(script|style)\b[^>]*>(.*?)</(script|style)>#is', "", $plaintext);
// remove br tags (missed by strip_tags)
$plaintext = preg_replace("#<br[^>]*?>#", " ", $plaintext);
// remove all remaining html
$plaintext = strip_tags($plaintext);
return $plaintext;
}
function get_title($html)
{
return preg_match('!<title>(.*?)</title>!i', $html, $matches) ? $matches[1] : '';
}
function trim_display($size,$string)
{
$trim_string = substr($string, 0, $size);
$trim_string = $trim_string . "...";
return $trim_string;
}
$url = "http://www.nextbigwhat.com/indian-startups/";
$data = file_get_contents($url);
//$url = trim_url(5,$url);
$title = get_title($data);
echo "title is ; $title";
$content = plaintext($data);
$Preview = trim_display(100,$content);
echo '<br/>';
echo "preview is: $Preview";
?>
URL タイトルが正しく表示されます。しかし、タイトルの内容を説明から除外すると、それも表示されます。
$plaintext = preg_replace('#([<]title)(.*)([<]/title[>])#', ' ', $html);
タイトルをプレーンテキストから除外する用途があります。
正規表現は、タイトル コンテンツを除外しないイベントとして正しいです。
ここで何が問題なのですか?
ここで得られる出力は次のとおりです。
title is ; Indian Startups Archives - NextBigWhat.com
preview is: Indian Startups Archives : NextBigWhat.com [whatever rest text]...
実際、タイトル部分に表示されるテキストは、プレビューに再び表示されることはありません。そのため、それを除外して残りのテキストをプレビューに表示したいのです。