↓検索・置き換え対象
$data = "IMG[1]<br />一つ目の画像<br />IMG[2]<br />二つ目の画像";
↓下のファンクションに渡し
IMG_DATA($data);
↓指定した"IMG[***]"の数字を取り出してDBに登録しているアドレスを取り出す
function IMG_DATA($a){
preg_match_all("/IMG\(([\d]+)\)/",$a,$keywords,PREG_SET_ORDER);
foreach ($keywords as $val){
$data_no = htmlspecialchars($val[1]);
$data_list = mysql_query("select * from img where id = $data_no");
while($src = mysql_fetch_array($data_list)){
$img_data = "<p><img src='$src[0]' /></p>";//$srcは画像のURLが入っています。
$img_last = mb_ereg_replace("/$val[0]/",$a,$img_data);
print "$img_last";
}
}
}
上記でとりあえず検索・置き換え対象からimgタグに変換することは出来たのですが、
目的としては、
↓「目標」
[画像]
1つ目の画像
[画像]
2つ目の画像
としたかった所が
↓「現実」
[画像]
[画像]
となって画像以外のデータがどこかへ行ってしまいます。
目標にするためにはどういった修正を行えばいいでしょうか?
初めてなもので質問する要領が判らないのですがお願いします。
環境はPHP5・UTF-8・WindowsXPです。
こんな感じでしょうか。
function IMG_DATA($a){ preg_match_all("/IMG\(([\d]+)\)/",$a,$keywords,PREG_SET_ORDER); foreach ($keywords as $val){ $val[0] = strtr($val[0], array('(' => '\(', ')' => '\)')); $data_no = htmlspecialchars($val[1]); $data_list = mysql_query("select * from img where id = $data_no"); while($src = mysql_fetch_array($data_list)){ $img_data = "<p><img src='$src[0]' /></p>";//$srcは画像のURLが入っています。 $img_last = mb_ereg_replace($val[0], $img_data, $a); if($img_last !== FALSE) $a = $img_last; } } print $a; }
http://www.php.net/ URLダミー
preg_match_all("/IMG\(([\d]+)\)/",$a,$keywords,PREG_SET_ORDER);
ではなく
preg_match_all("/IMG\[([\d]+)\]/",$a,$keywords,PREG_SET_ORDER);
かと思います。
[]
は文字クラスを示すので実際の文字として検索するにはエスケープする必要があります。
\[\]
ご回答ありがとうございます、質問するコードを間違えていたとは・・・
質問が下手で申し訳ありません;;、IMG(1)とIMG(2)の画像の置き換えは出来たのですが、IMG(1)とIMG(2)以外の文字"一つ目の画像・・・二つ目の画像"表示をどうしても表示出来なくて困っていました。
二度手間で申し訳ありませんが教えていただけませんでしょうか?orz
こんな感じでしょうか。
function IMG_DATA($a){ preg_match_all("/IMG\(([\d]+)\)/",$a,$keywords,PREG_SET_ORDER); foreach ($keywords as $val){ $val[0] = strtr($val[0], array('(' => '\(', ')' => '\)')); $data_no = htmlspecialchars($val[1]); $data_list = mysql_query("select * from img where id = $data_no"); while($src = mysql_fetch_array($data_list)){ $img_data = "<p><img src='$src[0]' /></p>";//$srcは画像のURLが入っています。 $img_last = mb_ereg_replace($val[0], $img_data, $a); if($img_last !== FALSE) $a = $img_last; } } print $a; }
具体的なコード提示ありがとうございます!
正規表現をちゃんと勉強し始めたばかりなので助かります。
今テストできる環境ではないので明日試して見ます。
ありがとうございました
具体的なコード提示ありがとうございます!
正規表現をちゃんと勉強し始めたばかりなので助かります。
今テストできる環境ではないので明日試して見ます。
ありがとうございました