• ベストアンサー

変数内のURL文字列を置換させたい

変数に格納した文字列のうち、URLを以下のようにして 置換しようとしましたが、置換されませんでした。 $html = str_replace("www.sample.com/hoge", "hoge.hogeoge.net", $html); str_replace の使い方が間違っているのでしょうか。 どうぞ宜しくお願い申し上げます。

  • PHP
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

ちゃんとなりますが。 【ソース】 <?php $html = "www.sample.com/hoge"; $html = str_replace("www.sample.com/hoge", "hoge.hogeoge.net", $html); echo $html; 【結果】 I:\WebApp\php>php.exe test.php hoge.hogeoge.net I:\WebApp\php> $htmlの中身に対象文字列がないだけでは?

das_horn
質問者

お礼

ご回答ありがとうございました。 勘違いをしておりました。 ちゃんとできました。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

あってるんじゃないですか? <?PHP $html="111www.sample.com/hoge222"; $html = str_replace("www.sample.com/hoge", "hoge.hogeoge.net", $html); print $html; //output:111hoge.hogeoge.net222 ?>

das_horn
質問者

お礼

ご回答ありがとうございました。 ちゃんとできました。 勘違いをしておりました。

関連するQ&A

  • urlを変数に入れたい。

    掲示板のコメント欄にURLが記入された場合は、一番初めに書き込まれたURLを変数に格納したいのですが、方法が考えつけません。 以下の書込み内容の場合で例えますと、 -------------------------------------------------- あいうえおhttp://hoge.com/かきくけこhttp://hoge.jp/ さしすせそhttp://hoge.net/たちつてと -------------------------------------------------- $FORM{'comment'}から一番初めに書き込まれた文字列 (http\:[\w\.\~\-\/\?\&\+\=\:\@\%\;\#\%]+) を抽出して、変数に格納。 $url = 'http://hoge.com/'; このような感じです。 お手数ですが、宜しくお願いいたします。

    • ベストアンサー
    • Perl
  • 文字列のアスタリスク置換

    PHP4でDBはMySQLを使用しています。 DBから取り出したいろいろな長さの文字列を*に置換したいのですがどのようにしたら良いでしょうか。 str_replaceを用いて置換をしようとしていますが文字列長が一定でないため難しいです。 宜しくお願い致します

    • ベストアンサー
    • PHP
  • 「?」の入った文字列置換を、RegEx.Replaceで行いたい

    WSHを使い、あるhtmファイルの中にある特定の文字列を、RegEx.Replaceを使って置換しようとしています。通常の文字列置換についてはなんとか成功しているのですが、下記のケースで壁に当たっています。前に進める為にはどうしたらよいか、ヒントをご存知の方がいれば大変有り難く思います。 今回作業の特徴としては 1)置換前の文字列の中にメタキャラ「?」が含まれており、 2)置換前の文字列は、DBから読み込んできた文字列である の2点です。(ちなみに1だけでは成功しているのですが、1と2が組み合わさると上手くいきません) 具体的には、下記のサンプルで置換前の文字列を url_before = "test.asp\?param=999" (?についてはエスケープ文字付与) のように明示的に書いてやると置換に成功しました。ところがDBから取得してきた文字列で置換をしようとしても失敗となります。 たとえばrs.fields("item")の中身が"test.asp?param=999"だったとして、先ほどの箇所を url_before = replace(rs.fields("item"), "?", "\?") とすると、置換されないのです。 '----- サンプル ----- Set fso = CreateObject("Scripting.FileSystemObject") Set regEx = New RegExp Set inFile = fso.OpenTextFile("c:\hoge\test1.htm") Set outFile = fso.CreateTextFile("c:\hoge\test1_wk.htm") ◆動くケース:url_before = "test.asp\?param=999" ◆動かないケース:url_before = replace(rs.fields("item"), "?", "\?") url_after = "test_999.htm" regEx.pattern = url_before repStr = url_after Do Until inFile.AtEndOfStream tempLine = inFile.ReadLine repLine = regEx.Replace(tempLine, repStr) outFile.WriteLine repLine Loop inFile.Close outFile.Close

  • PHPの文字列をJavascriptの変数にする

    PHPの変数に格納された文字列を、直接Javascriptの変数の一部として格納しようと考えています。 例:) <script> var txt = "<?php echo $text; ?>"; </script> しかし、$textにダブルクォーテーションなどの文字が含まれていると、スクリプト全体が破綻します。今のところ、PHPの中で、問題を起こしそうな文字列を変換するように処理しています。 例:) $text = str_replace("\\", "\\\\", $text); $text = str_replace("\"", "\\\"", $text); $text = str_replace("\n", "\\n", $text); これよりもスマートな方法(たとえば用意されている関数を使うなど)がありますでしょうか。

    • ベストアンサー
    • PHP
  • 文字列置換

    PHPでの文字列置換についての質問です。 文字列を受け取った時には [09/06/04 21:01:05] といった値で受け取ります。これを [6月4日 21時1分] といった値で返そうと考えています。 str_replace、explodeでの方法も考えましたがあまりににくどい処理になるため、断念しました。 なにか他に手はないものでしょうか?? よろしければ回答お願いします。

    • 締切済み
    • PHP
  • cshの文字列置換

    ヤマトです。 cshでファイル文字列を置換したいのですが、分かりません。 環境はRed Had Linux7.2です。 hoge1.txt の中の 'HIDUKE' という文字列を今日の日付に置換し、 hoge2.txt に出力するようなシェルを作りましたが、正常に動作しません。 ====hoge1.txt(置換前)==== 今日はHIDUKEです。 ====hoge1.txt(置換前)==== 今日は030814です。 ====SAMPLE.sh(一部抜粋)==== set TODAY = `date +"%y%m%d"` sed 's/HIDUKE/$TODAY/g' < hoge1.txt > hoge2.txt 以上のようなシェルを作りました。 結果として、hoge2.txtには出力されるのですが、 「今日は$TODAYです」 となってしまいます。 変数の値を置換するにはどのようにしたら良いのでしょうか? 教えて頂けると有り難く思います。宜しくお願いします。

  • 実行時エラー 14 文字列領域が不足しています。

    一度変数に格納した値を置換しようとしたら、 実行時エラー 14 文字列領域が不足しています。 となりました。 変数は、String型で宣言しています。 myStr = rs("回答文") myStr = Replace(myStr, Chr(10), "") のように、一度myStrに格納した変数の格納を取ろうと思い、 Replaceで置換しようとすると、エラーが発生します。 myStr = rs("回答文") で myStrに格納できた時点で、容量は足りているはずだし、 Replace(myStr, Chr(10), "")で置換することによって、更に容量を減らしているのに なぜエラーになるのでしょうか? アクセスvbaです。

  • ダブルクォーテーションが置換できません

    いつもお世話になっております。 PHP初心者です。 シングルクォーテーションとダブルクォーテーションを文字列として入力したいと思い、以下のように記述しました。 -------------------------------------------------- $naiyo = $_POST['naiyo']; $search = array('\'','"'); $replace = array('\'\'','\"'); $naiyo2 = str_replace($search,$replace,$naiyo); -------------------------------------------------- シングルクォーテーションは置換された(文字列として表示された)のですが、ダブルクォーテーションは表示されず、ダブルクォーテーション以下の文字列が消えてしまいます。 置換ができていないというよりも、そもそもダブルクォーテーションが検索に引っかかってもいないようです。 どのようにすればダブルクォーテーションも置換できるか、お分かりの方がいらっしゃいましたらご教示ください。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • 「ゞ」のみ置換するにはどうすればいいでしょう?

    「ゞ」を置換したいのに、 「ゞ」の次の文字まで置換されてしまう。 Sub test() Dim str会社名 As String str会社名 = "いすゞ自動車" Debug.Print Replace(str会社名, "ゞ", "ず") End Sub を実行すると 「ゞ自」が対象になってしまうのですが、 どうしてでしょうか? 「ゞ」は一文字ですよね? Replaceで「ゞ」のみ置換するにはどうすればいいでしょう?

  • 文字列の中の特定部分とそうでない部分とで処理を分けたい

    文字列中で、<test>~</test>で囲まれた部分と、囲まれてない部分とで処理を分けたいです。 そして、分けて処理したあとに、くっつけたいです。 abcdEFG <test> ABCDEFG </test> hiJKLmn ↓ 例えば、<test>で囲まれた部分は小文字に変換、囲まれていない部分は大文字に変換という処理であれば以下のようにしたいのです。 ABCDEFG <test> abcdefg </test> HIJKLMN 扱う文字列は、UTF-8で複数行です。 自分でとりあえず動作するコードは作成してはみたものの、、、 あまりスマートとはいえないと感じていて、もっといい方法があればご教示お願いしたいです。。。 1.文字列Aの中から、<test>で囲まれた部分をpreg_match_all()で取得し、変数Aに格納。 2.変数Aに処理を加え、変数Bに代入。 3.preg_replace()で文字列Aの中の、変数A部分を変数Bに置換。 4.文字列Aを、<test>で囲まれた部分をキーとしてpreg_split()で分解し、変数Aに格納。 5.変数Aに処理を加え、変数Bに代入。 6.preg_replace()で文字列Aの中の、変数A部分を変数Bに置換。   $pre1 = array();   $pre2 = array();   preg_match_all("/<test>((.|\r\n|\n)*?)<\/test>/u", $p_string, $pre1);   for ( $x = 0; $x < count($pre1[0]); $x++ ) {     # $pre1[0]ではなく$pre1[1]としてるのは<test>タグを含めないため     $pre2[$x] = $pre1[1][$x];     # hoge*()は処理     $pre2[$x] = hoge2( $pre2[$x] );     $pre2[$x] = hoge4( $pre2[$x] );     # <test>タグを戻して、置換後の文字列完成・・・(1)     $pre2[$x] = '<test>'.$pre2[$x].'</test>';     # 置換パターン・・・(2)     $pre1[0][$x] = "/" . preg_quote($pre1[0][$x], "/") . "/u";   }   # 文字列から、(2)置換パターンを探して、(1)置換後文字列に置き換え   $p_string = preg_replace( $pre1[0], $pre2, $p_string );   $pre1 = array();   $pre2 = array();   $pre1 = preg_split("/<test>(.|\r\n|\n)*?<\/test>/u", $p_string, -1, PREG_SPLIT_NO_EMPTY);   for ( $x = 0; $x < count($pre1); $x++ ) {     $pre2[$x] = $pre1[$x];     # hoge*()は処理     $pre2[$x] = hoge1( $pre2[$x] );     $pre2[$x] = hoge2( $pre2[$x] );     $pre2[$x] = hoge3( $pre2[$x] );     # 置換後の文字列完成・・・(3)     $pre2[$x] = hoge4( $pre2[$x] );     # 置換パターン・・・(4)     $pre1[$x] = "/" . preg_quote($pre1[$x], "/") . "/u";   }   # 文字列から、(4)置換パターンを探して、(3)置換後文字列に置き換え   $p_string = preg_replace( $pre1, $pre2, $p_string );   # 最後に<test>タグを削除する   $p_string = preg_replace( "/<test>((.|\r\n|\n)*?)<\/test>/u", $1, $p_string );

    • ベストアンサー
    • PHP