![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
php で C言語のdefineマクロのようなものありますか
echo nl2br(str_replace($old_str,$new_str,htmlspecialchars($row['specA'],ENT_QUOTES)));
:
echo nl2br(str_replace($old_str,$new_str,htmlspecialchars($row['specB'],ENT_QUOTES)));
:
echo nl2br(str_replace($old_str,$new_str,htmlspecialchars($row['specC'],ENT_QUOTES)));
のような部分が多数あり、長い部分を別関数を用意せずに、簡潔に記載したいです。
C言語であれば、
#define echoX(STR) nl2br(str_replace($old_str,$new_str,htmlspecialchars($row['STR'],ENT_QUOTES)))
で定形処理部を define文で定義しておいて、変更部分だけを与えて
echoX(specA);
や
echoX(specB);
echoX(specC);
のように簡潔に記載できますが、同じようなことはPHPでは出来ないのでしょうか?
もちろん、
$old_str = array('<sup>','</sup>','<br>');
$new_str = array('<sup>','</sup>','<br>');
は予め別のところで定義はしています。
No.2ベストアンサー
- 回答日時:
C言語の #define→プログラムを書き換える
ということからすると、同等なのは
eval
https://www.php.net/manual/ja/function.eval.php
でしょう。
ただ「禁断の術」なので、お勧めできません。
関数を作るのが、やはりいいかと思います。
関数名を増やしたくない、ということなら、 無名関数を使うのがいいでしょう。
https://www.php.net/manual/ja/functions.anonymou …
回答ありがとうございます
eval ですか、こりゃ大事になりますね。
やりたいのは、
プログラムは変えずに見た目だけを変える
ことです。
気持ちとしては、
関数を作るほどではないが、複数回、同じことを書くのは偲びない
ので、文字列変換(プリプロセッサ、#define) で対応できないかしら
というものです。
PHPでは、C言語のような簡略記法が用意されていないなら諦めるしか無いですね。
そもそも、インタプリター系では無理なのでしょうかね。
No.1
- 回答日時:
うーん、phpはあまり使っていませんが、C言語にあるようなdefineは見たことありません。
php言語の祖先はperlですが、perlにはそういう構文は無いですからね。
ちなみにC#にも、defineに相当するような構文は無いみたいです。
その代わりに、もっと強力な「属性」ってのがあります。
C、C#はコンパイラー系の言語です。
(C#では、インタプリター機能も追加されましたけどね)
perl、phpといったインタプリター系では、ちょっと難しいのでは?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# str[j++]の意味 2 2022/08/30 16:20
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- C言語・C++・C# C言語の質問です HTMLでこのようなコードを書いたのですがそれをC言語で同じように書きたいです < 1 2022/08/11 23:38
- C言語・C++・C# sprintf()の使い方について 1 2022/08/17 16:16
- C言語・C++・C# C# 浮動小数の数値文字列化 1 2022/04/18 15:15
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
BASIC認証のユーザー名をPHPで...
-
php で C言語のdefineマクロの...
-
PHPとHTMLをまとめてコメントア...
-
PHPでパラメータ取得
-
onedrive にexcelファイルをア...
-
別ファイルの変数を呼び出した...
-
PHPのif文でその処理を途中で抜...
-
フォントの色を変えるには?
-
.phpと.incファイルの違いはな...
-
「@$変数」の「@の意味は?」
-
【file_exists】ファイルが存在...
-
$_SESSION 有効期限をブラウザ...
-
stat failed
-
2つの画像ファイルが異なるファ...
-
PHPで新しいウインドウで開く命...
-
CFileDialogの最初のディレクト...
-
【PHP】画像が表示されず「×」...
-
Subversionのリポジトリの削除
-
別PHPファイルに変数を渡す
-
「クラス関数」「メンバ関数」...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
php で C言語のdefineマクロの...
-
PHPのタイムアウトについて
-
PHP MySql ページング
-
ページ全体をリロードしてしまう
-
fortran結果をブラウザに表示
-
変数に格納する文字列の表示方法
-
[wordpress]外部RSSを「文字...
-
PHPでパラメータ取得
-
受け取り値を"豊岡市","養父市"
-
htsp ?? <?= ?>??
-
BASIC認証のユーザー名をPHPで...
-
■■simpleXMLでホットペッパーの...
-
現在Multiviewsの設定にてphpが...
-
PHP Mysql SELECTであいまい検...
-
「include()」関数の使い方につ...
-
特定の値をPOST送信で他のサー...
-
phpでハイパーリンクして値を持...
-
simplexml_load_file で呼び出...
-
PHPとHTMLをまとめてコメントア...
-
「include」と「file_get_conte...
おすすめ情報