2017-03-10 10 views
0

私のサイトにはPHPフォームがあります。フォームは最終的にユーザーが提出した記事を作成します。バッファにテキストハイパーリンクを作成するにはPHPエコーが必要

フォームのデータフィールドの1つはドロップダウンメニューで、ユーザーはそれらが表す出版物を選択できます。

現在のところ、私は自分の出版物の名前を表示しようとしているだけです。

しかし、私はその名前がそれぞれの出版物へのクリック可能なリンクであることを希望します。

は、これを達成するための試みで、私はこのように私のフォームを設定:

Form: <select name="publication" id="publication"> 
      <option value="http://www.espn.com">ESPN</option> 
      <option value="http://www.cnn.com">CNN</option> 
      <option value="http://www.abcnews.com">ABC</option> 
      <option value="http://www.cbsnews.com">CBS</option> 
      <option value="http://www.foxnews.com">FOX</option> 
      </select> 

そして、エコーは、このように設定されています

Echo: 

    <?php $publication = htmlspecialchars($_POST['publication']); echo $publication; ?> 

は残念ながら、結果は完全なURLを生成します私は達成しようとしているテキストリンクの代わりに。

希望のクリック可能なテキストリンクを実現するために、フォームまたはエコーをどのようにコード化するのかよくわかりません。

答えて

0

の値は、表示名ではなく<option>valueになります。

名前と一緒にリンクを表示したい場合は、その出力を、静的な配列に出版物のリストをコード考える:

$publications = [ 
    "media1" => "link", 
    "media2" => "link" 
] 

if (array_key_exists($_POST["publication"], $publications)) { 
    echo '<a href="' . $publications[$_POST["publication"]] . '">' . htmlspecialchars($_POST["publication"]) . '</a>'; 
} 
+0

あなたの提案では、tyteen ...フォームにリンク部分を含めずに、エコー配列内に参照を設定しますか? name = link? –

+0

これは私のコードに挿入しようとすると、あらゆる種類のコードエラーが発生しました。 –

+0

どのようなエラーが表示されますか? (配列定義の構文はPHP 5.4+であり、あなたがPHP 7にいないのであれば、あなたは本当にアップグレードする必要があります。) – tyteen4a03

0

それは価値オプションではなく、innerHTMLプロパティを取っています。 1つの解決策は、値を次のようにすることです。

<a href='http://example.org'>Example</a> 

注:これを機能させるには、エスケープ文字を使用する必要があります。

+0

これは私が求めていた簡単な解決策のようです。私はこれを試し、結果を投稿するために戻ってきます。みんなありがとう。 –

+0

残念ながら...単に上記の例を挿入するだけで動作しませんでした。それは

+0

htmlspecialcharactorsのものを削除してみてください。それは問題かもしれません。 –

関連する問題