人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

phpの正規表現について教えてください。
いまいち正規表現が理解出来ていないので今回を良いきっかけに出来ればと考えています。

試したいのは
<font color="#f9910a">□</font><a href="index.php?id=○○○">hogehoge</a>
と言うHTMLコードが入った変数があり

それを
<font color="#f9910a">□</font><a href="abc/index.php?id=○○○">hogehoge</a>

<font color="#f9910a">□</font><a href="index.php?id=○○○">abcd</a>
に変換したり、もしくは条件にあったものを削除する事が行えればと考えています。

○○○の部分はデータベースから出力されるIDで、この部分は一致しません(将来桁も増えて行きます)。

初心者の質問なので見当違いがあるかもしれませんが、どうぞよろしくお願いします。

●質問者: t-2-o
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:HTML PHP いまいち コード データベース
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● pahoo
●60ポイント ベストアンサー

"□" と "○○○" の部分が任意の文字列(日本語文字を含む)になるという前提で回答します。以下のスクリプトを UTF-8 で保存してください。

<?php
mb_internal_encoding('UTF-8');
mb_regex_encoding('UTF-8');
$instr = '<font color="#f9910a">□</font><a href="index.php?id=○○○">hogehoge</a>';

$pat1 = '/<a href=\"index\.php\?id=/u';
$rep1 = '<a href="abc/index.php?id=';
$outstr1 = preg_replace($pat1, $rep1, $instr);
echo '[1] ' . htmlspecialchars($outstr1) . "<br />\n";

$pat2 = '/<a href=\"index\.php\?id=([^\"]*)\">hogehoge<\/a>/u';
$rep2 = '<a href="index.php\?id=$1">abc</a>';
$outstr2 = preg_replace($pat2, $rep2, $instr);
echo '[2] ' . htmlspecialchars($outstr2) . "<br />\n";
?>

正規表現パターンは $pat1, $pat2 の2つで、各々の置換パターンが $rep1, $rep2 になります。

下記のサイトを参考にしてください。

◎質問者からの返答

■は普通にHTMLに■と入力したというものでした。

○○○は数字になります。

hogehogeの部分が日本語になる可能性があります。

これらを踏まえてもスクリプトの内容は変わらないのでしょうか。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ