スレッド表示 | フラット表示〕 全トピック 920 件中 503 番目 次≫ ≪前

HTMLのタグ除去

created: 2004-12-16 17:57 | modified: 2004-12-20 09:03 | reply: 3

[1998] HTMLのタグ除去

user: hard | created: 2004-12-16 17:57
以下のようなHTMLから、ルビを除去してデータ"整形外科"を取得しようとしています。
<ruby>整形<rt>セイケイ</rt></ruby>
<ruby>外科<rt>ゲカ</rt></ruby>

$data = ereg_replace("<rt>.+</rt>", $data);
$data = strip_tags($data);
としてみたのですが、1行目の<rt>から2行目の</rt>までが抜かれてしまい、"整形"しか取得できませんでした。
正規表現の書き方で、なんとかなるものでしょうか?
よろしくお願いします。
reply: 1999 2004 返信 編集 削除

[1999] Re.HTMLのタグ除去

user: hamaji | created: 2004-12-17 02:04
こんばんは。

> $data = ereg_replace("<rt>.+</rt>", $data);
> $data = strip_tags($data);
『ereg_replace("<rt>.+</rt>", $data);』
この書き方は、置換後の文字列がないのでエラーになりませんでしたか?
replaceは正規表現置換なので、文字を抜き出すのは正規表現検索を使います。

あるタグとタグの間に挟まれた文字にマッチさせるのは
『<TagName>(.+)<TagName>』または『<TagName>(.+)<\/TagName>』
で表せますので。
#これはPerl風の書き方です。

たとえば、以下のようにすればいいと思います。
<?php
$data =
"<ruby>整形<rt>セイケイ</rt></ruby>
<ruby>外科<rt>ゲカ</rt></ruby>";

echo $data . "<br>\n";

if (preg_match_all("/<ruby>(.+)<rt>/", $data, $matches)) {
echo "マッチします。<br>";
$data2 = "";
foreach ($matches[1] as $value) {
$data2 .= $value;
}
echo "抜き出した文字は" . $data2 . "です。<br>\n";
}
else {
echo "マッチしません。<br>";
}

// 参考までにマッチした内容を表示
echo "<pre>\n";
print_r($matches);
echo "</pre>\n";
?>
※pregとeregでは書式が異なりますので、ご注意を。

http://jp2.php.net/manual/ja/function.preg-match.php
http://jp2.php.net/manual/ja/function.preg-match-all.php

私はpregのほうをよく使います。
といっても私も正規表現は詳しくないので、難しい質問をされるとおそらく答えられません。(笑)

ほかにもあると思うので、いろいろ研究してみては、どうでしょうか。
Parent: 1998  返信 編集 削除

[2004] タグで囲まれた部分を除去

user: | created: 2004-12-18 03:53
こんにちは。
↓こういうやり方もありかなと思います。

$data = ereg_replace("<rt>.+</rt>", $data);

の部分を、

$data = ereg_replace("<rt>[^<]+</rt>", '' , $data);

とします。


※補足/hamajiさんがご指摘されているように、hardさんの表記では、置換後の文字列を忘れていますね。たぶんBBS書き込み時に忘れただけだと思いますが念のため。
Parent: 1998  reply: 2012 返信 編集 削除

[2012] Re.タグで囲まれた部分を除去

user: hard | created: 2004-12-20 09:03
> $data = ereg_replace("<rt>[^<]+</rt>", '' , $data);
>
ありがとうございました。うまくいきました。

> ※補足/hamajiさんがご指摘されているように、hardさんの表記では、置換後の文字列を忘れていますね。たぶんBBS書き込み時に忘れただけだと思いますが念のため。
書き忘れでした。
Parent: 2004  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 503 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑