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

phpに関する質問です。
str_replaceを使って置換をしたいと思うのですが、
IMG SRC="/test"

IMG SRC="http://example.com/test"
と置換したい場合、どのように記述すればよいのでしょうか?

●質問者: fm315
●カテゴリ:ウェブ制作
✍キーワード:PHP SRC test 記述
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● pxb12663
●25ポイント

print str_replace('/test','http://example.com/test',

'IMG SRC="/test"')

でいいのではないでしょうか?


2 ● kato-s
●25ポイント

以下のコードで動作確認しました。PHP5です。

$str = "IMG SRC=\"/test\"";

$from = "/test";

$to = "http://example.com/test";

$str = str_replace($from, $to, $str);

?>

<html>

<head><title>test</title></head>

<body></body>

</html>


3 ● aki73ix
●35ポイント

ならば、

$url1 = str_replace(' SRC="/',' SRC="http://example.com/',$url1); // 先頭が /の場合はルールに従う

のようにすればよいと思います

<?php

$url1 = '<IMG SRC="/test"><BR>

<IMG SRC="sample.htm"><BR>

<IMG SRC="/test/sample.htm"><BR>

<IMG SRC="//example.com/sample.htm"><BR>

';

$url1 = str_replace(' SRC="//',' SRC="http://',$url1);             // 先頭が //の場合はhttp:を補う

$url1 = str_replace(' SRC="/',' SRC="http://example.com/',$url1);  // 先頭が /の場合はルールに従う

print $url1;

?>

【元の文章】

<IMG SRC="/test"><BR>

<IMG SRC="sample.htm"><BR>

<IMG SRC="/test/sample.htm"><BR>

<IMG SRC="//example.com/sample.htm"><BR>

【変換後】

<IMG SRC="http://example.com/test"><BR>

<IMG SRC="sample.htm"><BR>

<IMG SRC="http://example.com/test/sample.htm"><BR>

<IMG SRC="http://example.com/sample.htm"><BR>


ただ、この場合

IMG SRC="test.htm"のような場合はこの時変換されません

この場合はpreg_replaceを使い、次のように変更します

http://www.yc.musashi-tech.ac.jp/~yamada/doc/php/0411.html (参考)

<?php

$url1 = '<IMG SRC="/test"><BR>

<IMG SRC="sample.htm"><BR>

<IMG SRC="/test/sample.htm"><BR>

<IMG SRC="//example.com/sample.htm"><BR>

';

$url1 = str_replace(' SRC="//',' SRC="http://',$url1);             // 先頭が //の場合はhttp:を補う

$url1 = str_replace(' SRC="http://example.com/',' SRC="/',$url1);  // 既に代入されている場合は一度戻す

$url1 = preg_replace('/( SRC=¥")([a-z0-9])/i',"$1/$2",$url1);      //先頭に /を付与する

$url1 = str_replace(' SRC="/',' SRC="http://example.com/',$url1);  // 先頭が /の場合はルールに従う

print $url1;

?>

【変換後】

<IMG SRC="http://example.com/test"><BR>

<IMG SRC="http://example.com/sample.htm"><BR>

<IMG SRC="http://example.com/test/sample.htm"><BR>

<IMG SRC="http://example.com/sample.htm"><BR>


ちなみに、HTML内のリンク全てに特定のドメインをベースにしたいのであれば <BASE HREF="~">を使う方が楽だと思います

http://www.tagindex.com/html_tag/link/base.html

◎質問者からの返答

みなさん、有難うございます。

大変参考になります。

関連質問


●質問をもっと探す●



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