str_replace()の例
$bodytag = str_replace ("%body%", "black", "<body text=%body%>");

において
%body%
の%の意味や使い方を教えてください

このQ&Aに関連する最新のQ&A

A 回答 (1件)

特別な意味はありません。


%はたんなる文字列です。
str_replace ("body", "black", "<body text=body>");
の様に書くと
"<black text=black>"
になってしまうために、置換対象を限定するために、普通の英単語としては使われない文字にするために使われているのだと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます
特に意味は無いということですね

お礼日時:2005/01/26 16:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Q$str=mb_ereg_replace('goo','グッド',$str);

によって
$strの中の'good'を'グッド'に変更したいのですが
'good'は大文字と小文字を区別しないようにしたいのですがどうしたらいいでしょうか?
例えば
'goOd'も'グッド'にしたいのです。
PHPマニュアルには詳しい使い方が載っていないので困っています。

Aベストアンサー

大文字小文字を無視するなら
mb_eregi_replace
では?

参考URL:http://jp2.php.net/manual/ja/function.mb-eregi-replace.php

Q$str=preg_replace('/\u3000/','  ',$str);

によってutf-8の空白文字をhtmlの空白文字に変換しようとしたのですがエラーになります
どうしたらいいのでしょうか?

Aベストアンサー

>そもそも?のところにコード表現で空白文字を入力する手段はないのでしょうか?
\xE3\x80\x80
で一応いいかと思いますが…

Q@$a = $b["c"] or $a = "text"; という記述の仕方

これは $a = b["c"] がエラーだったら$aに"text"を代入できるので楽なんですが、
あまり使わない方がいい構文なのでしょうか?

配列の存在チェックをしていて
if(isset($b["c"])){
$a = $b["c"];
}else{
$a = "text";
}
こちらの方がいいのでしょうか?
or の使い方が検索してもイマイチ分からないのです

@はエラーが発生しているのに、それを表示しない方法だと認識しています
だからエラーを出さないのが正しい記述なのであれば、後者が正しいのかと思ったり
1行で収まる上に、一応構文として理解も難しくないので問題ないのかなと思ったり

タイトルの記述方法が不適切なのかどうかと、orの適切な使い方、@はあまり使わない方がいいのかを教えてください
本やネットで検索してみたのですが、どうしてもヒットしません
検索で分かるのでしたら、どのような検索の仕方がいいか教えてください!
お願いします。

Aベストアンサー

@$a = $b["c"] or $a = "text";

if(isset($b["c"])){
$a = $b["c"];
}else{
$a = "text";
}
では$b["c"] = 0の時の動作が違いますね
上の式と同じにするなら
if(isset($b["c"]) and $b["c"]){
または
if(!empty($b["c"])){
になると思います
@は自分も関数の頭に使うことはたまにあります。使わない方がいいとは思いません。

@がないと$b["c"]が未定義の場合にNoticeエラーとなります。

Qpreg_replace, ereg_replace

$bodyにはテキストファイルなどから読み込んだ、$dateと言う文字(変数ではない)と、改行を含む文字列。

それで、「$date」を、phpスクリプト上の$dateの値に置換したく、

$tmp = preg_replace("/\$date/s", $date, $body);
または、
$tmp = ereg_replace("\$date",$date,$body);
としたのですが、どうも置換されません。何がいけないのでしょうか?

Aベストアンサー

>$が行末記号でないようにするために、頭に「\」を
>付けたのですが、なぜここで\$としたのにもかかわ
>らず、行末記号として認識されてしまったのでしょ
>うか・・・

「$date」はPHPの変数を意味します。その扱いはダブルクォート内部でも同じです。
従ってダブルクォート内部では「\$date」ではじめて文字列としての「$date」になります。
このままでは#1に書いた通り「行末」を意味しますので「文字」としての「$」とするために「\\」を更に付加します。
結果「"\\\$date"」という記述になります。

ダブルクォートを使用せずにシングルクォートを使用すると「'\$date'」とそのまま書けたりします。

Qstr_replace()で、なぜ置き換わらないのでしょうか?

下記でエスケープのtestをしていますが、何故か& の置換えが出来ず、「abc & def」としか表示されません。
<?php
$memo="abc & def";
$memo=str_replace('&','&amp',$memo);
echo $memo;
?>
幼稚な質問で恐縮ですが、どこが不具合の原因か教えて頂けるとありがたいです。

Aベストアンサー

HTML出力時のエスケープが目的ならそれで合ってます。エスケープされたソースを、ブラウザが、元の文字に戻して表示します。

ただ、その目的であれば、自分で独自に処理せずに、htmlspecialchars関数を使います。
http://www.php.net/manual/ja/function.htmlspecialchars.php

サンプルは、↓ ENT_QUOTES と 文字コード名を省略せず指定してください。
$memo = htmlspecialchars($memo,ENT_QUOTES,"UTF-8");


このカテゴリの人気Q&Aランキング

おすすめ情報