質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

5回答

815閲覧

セェクトタグの後に文字列追加

westmountain

総合スコア10

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2019/02/21 01:53

前提・実現したいこと

大量にあるファイルの中の、三項演算子を、PHPのstrtr関数を用いて、プログラムで置換したいと思っています。
ここに質問の内容を詳しく書いてください。
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

配列内に文字コードとして、<select name="of">の後に、

<option <?= $of == '1' ? 'selected' : "" ?> value="1">登録逆順表示</option>等を入れたいのですが、 <selectタグとして認識をしてしまい、うまく配列にはいりません、、 ``` エラーメッセージ ```

該当のソースコード

$replace = array(
"<select name="of">" => "<select name = "of"> <option <?= $of == \"10\" ? \"selected\" : \"\" ?> value="10">登録逆順表示</option>"
);

ソースコード

PHP

試したこと

ここに問題に対して試したことを記載してください。
色々とエスケープ文字\を使ってみましたが、文字コードとして認識しなくて、select文と認識してしまいます、、

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。
strtr関数でなくとも、htmlのファイル内で、
<select name = "of">
の後ろに、<option <?= $of == '1' ? 'selected' : "" ?> value="1">登録逆順表示</option>
を追加する方法があれば、お教え頂きたく、宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/02/21 01:55

> セェクト 誤字ってますので修正願います(一瞬「ん?」となるだけでも離脱率があがります)
m.ts10806

2019/02/21 01:55 編集

あとコードはきちんとコードブロックの中に入れてください。 質問テンプレート部分は関係ないのでしたら除いてください。 質問がグッチャグチャになります(質問が読みづらいと更に離脱率が上がります)
m.ts10806

2019/02/21 01:56

> htmlのファイル内 原則、htmlファイル内ではPHPは動作しませんよ。(そういう設定しているのでしたら書かれないとあらぬ誤解を与えます)
miyabi_takatsuk

2019/02/21 02:01

ローマ字打ち日本語なのに、selectってまんま打ってそうなったんでしょうね 汗 質問者さん、修正をお願いします。
miyabi_takatsuk

2019/02/21 02:14 編集

また、 <option <?= $of == '1' ? 'selected' : "" ?> value="1"> をhtmlに記載したいってことは、これ、生のHTMLではなく、Vue.jsやReactなどのJSフレームワーク、もしくはRailsなどのフレームワークのコンパイル前ってことですよね? 生のHTMLではありえない記載なので。 その場合、HTMLのタグだけでは、正しい回答は得られないと思いますので、 使うフレームワークなどのタグもつけましょう。 また、PHPは関わっているようなので、PHPタグは100%つけるべきです。
Lhankor_Mhy

2019/02/21 02:12

タグのご修正をお勧めします。PHPが入っていないです。
m.ts10806

2019/02/21 02:16

>miyabi_takatsukさん 冒頭に[PHPのstrtr関数を用いて]とあるのでPHPですね。 そもそもなぜstrtr()というのかが甚だ疑問ですが。 プログラムの内容をプログラムで置換しなきゃいけないってそもそもの作りを見直さないとマズイ気がします。
miyabi_takatsuk

2019/02/21 02:30

>mts10806さん 見落としてました(汗)、ありがとうございます。 よく見てみたら、PHPで三項演算でやろうとしてる感じですよね。 ぱっと見、なんかのフレームワークかと思ってしまいました 汗
m.ts10806

2019/02/21 02:42

miyabi_takatsukさん 質問見づらいので仕方がないですね。 エンジニアにとって英数字全角は非常に読みづらいです。 (何に対して何をしたいのかも読み取りづらい)
m.ts10806

2019/02/21 03:56

質問者さん ついた回答がほぼ全て違う方向性なのをお気づきですか? つまりそれだけ内容が伝わってないということです。それだけ多くの他人の時間が無駄になっていることになります。 せっかくの質問テンプレートですし、きちんと精査してください。 このままだとあなたが得たい回答はずっと得られません。
westmountain

2019/02/24 13:52

質問がまずくて、、皆様にお手数をおかけし申し訳ありませんでした、 真摯なご意見を頂き、感謝しています。 今回、配列内に、<select,,>を文字列として入れることはやめて、別の手段で解決しました、、 また、今回質問を投稿したところに、情報を追記しました。 今後とも宜しくお願いします。
guest

回答5

0

PHPのスクリプトからPHPコードを出力しても、そのコードはPHPでは処理されないので、出力する時点でHTMLになるようにする必要があります。

$replace = array( '<select name="of">' => '<select name="of"> <option '. ($of == "10" ? "selected" : "") .' value="10">登録逆順表示</option>' );

投稿2019/02/21 03:15

kasa0

総合スコア578

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

大目的が分かりませんが「ソースコードの置換」なら
IDE(Eclipseなど)の置換機能を利用してください。

正規表現やファイル名のパターンも使えます。
イメージ説明

もちろん、全て一気に置換するのではなく、
きちんと1つ1つプレビューで確認してください。
イメージ説明
イメージ説明

投稿2019/02/21 02:26

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

"と'の使い分けをすると、わざわざエスケープする必要がなくなったりします。
PHPも含めただいたいの言語では、
'この中では、"は文字列として扱うことができる'←逆もしかり
といった使い方ができます。
(swiftなどは、別の意味や仕様になるので、同様の使い方ができなかったりします)
ただし、PHPは、""の中でないと、¥エスケープがうまく動かないなど、"と'で仕様が若干異なります。

以上を踏まえ、下記でいかがでしょうか。
(何がやりたいか、いまいちよくわからないので、そこはエスパーします)

php

1<?php 2 3echo '<select name="of"><select name="of"><option value="10"' 4 . ($of == 10 ? ' selected="selected"' : '') . '>登録逆順表示</option>'; 5 6?>

投稿2019/02/21 02:23

miyabi_takatsuk

総合スコア9528

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

$moji1="<select name="of">";
のように、\文字ではなく、
<は< >は> に代替すれば、可能になりそうです、、これで試してみます。

投稿2019/02/21 02:20

westmountain

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/02/21 02:29 編集

回答に書かないでください。回答にはコメントがつけられます。 回答は削除依頼が出せます。 また、質問も回答も編集できます。 スルーせずご対応願います。
guest

0

PHPコマンドを含むソースを自分自身のコマンドで置換しようとしているのでしょうか?
ちょっと認識に無理がある内容のように見えます。

投稿2019/02/21 02:13

yambejp

総合スコア114784

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問