0

まず、SO でいくつかのスレッドを見つけまし

これが私が持っているテキストのサンプルです:

Some text bla bla bla bla<br /><b>Date</b>: 2012-12-13<br /><br /><b>Name</b>: Peter Novak<br /><b>Hobby</b>: books,cinema,facebook

望ましい出力:

2012-12-13
Peter Novak
books,cinema,facebook

<b>この情報をデータベースに保存する必要がありますが、タグ間の値 (例: Date) とすぐに値 (この場合は)を検出する方法がわかりません: 2012-12-13...

これについてのあらゆる助けに感謝します、ありがとう!

4

4 に答える 4

1

トラバースする DOM はそれほど多くないため、DOM トラバーサル ツールでこれを処理できることはあまりありません。

これはうまくいくはずです:

b1)タグの前のすべてを削除します。

b2)タグを削除します。DOM トラバーサル ツールはこれを行うことができますが、それらが純粋なテキストである場合は、正規表現でも行うことができ、同じパスでコロンとそれに続く空白を削除できます。<b\s*>[^<]+</b\s*>:\s*

3) タグのシーケンスを br改行のみに変更します (本当に変更しますか?)。DOM トラバーサル ツールはこれを行うことができますが、正規表現も可能です。(?:<br\s*/?>)+

$html = preg_replace('#^[^<]+#', "", $html);
$html = preg_replace('#<b\s*>[^<]+</b\s*>:\s*#', "", $html);
$html = preg_replace('#(?:<br\s*/?>)+#', "\n", $html);
于 2013-01-04T19:41:32.373 に答える
0

<b>Date</b><b>Name</b><b>Hobby</b>および が<br />そのように常に存在する場合は、 strpos() および substr() を使用することをお勧めます

たとえば、日付を取得するには:

// Get start position, +13 because of "<b>Date</b>: "
$dateStartPos = strpos($yourText, "<b>Date</b>") + 13;
// Get end position, use dateStartPos as offset
$dateEndPos = strpos($yourText, "<br />", $dateStartPos);
// Cut out the date, the length is the end position minus the start position
$date = substr($yourText, $dateStartPos, ($dateEndPos - $dateStartPos));
于 2013-01-04T19:31:03.887 に答える
0

フォーマットが一貫していると仮定すると、次のexplodeように機能します。

<?php
$text = "Some text bla bla bla bla<br /><b>Date</b>: 2012-12-13<br /><br /><b>Name</b>: Peter Novak<br /><b>Hobby</b>: books,cinema,facebook";
$tokenized = explode(': ', $text);
$tokenized[1] = explode("<br", $tokenized[1]);
$tokenized[2] = explode("<br", $tokenized[2]);
$tokenized[3] = explode("<br", $tokenized[3]);

$date = $tokenized[1][0];
$name = $tokenized[2][0];
$hobby = $tokenized[3][0];

echo $date;
echo $name;
echo $hobby;

?>
于 2013-01-04T19:44:04.447 に答える
0

PHP Simple HTML DOM Parserを使用すると、これを簡単に実現できます (jQuery と同様)。

include('simple_html_dom.php');
$html = str_get_html('Some text bla bla bla bla<br /><b>Date</b>: 2012-12-13<br /><br /><b>Name</b>: Peter Novak<br /><b>Hobby</b>: books,cinema,facebook');

または

$html = file_get_html('http://your_page.com/');

それから

foreach($html->find('text') as $t){
    if(substr($t, 0, 1)==':')
    {
        // do whatever you want
        echo substr($t, 1).'<br />';
    }
}

例の出力を以下に示します

2012-12-13
Peter Novak
books,cinema,facebook
于 2013-01-04T20:30:54.467 に答える