2

編集:他の人が読んでいる場合、これは解決されています。%20 はアンカー ID では許可されていません。

アンカー ID を使用する通常の理由として、テキスト リンクのリストをタイトルとして作成しています。これは、ページのさらに下の関連するテキスト ブロックにリンクするだけです。

URLを正常にエンコードできないことを除いて、コードは機能し、エラーなどはありません。
リンクがなくrawurlencode()ても完全に正常に機能しますが、管理する必要があるスペースがあります (検証も行いません)。

私はちょうど試してみましたがurlencode()、これはうまくいきましたが、%20 の代わりに + が追加され、可能な場合は + を避ける必要があると読みました (おそらくそれは正確ではありませんが、なぜ機能しないのか説明しrawurlencode()ていません)。

基本的なコード:

// The array of list titles
$aryList = array( "1. Communications", "2. Definitions and Conditions");

// Loop to output each list title as a link
foreach ($aryList as $strListValue)
  {
    echo "<a href='#".rawurlencode($strListValue)."'>$strListValue</a>";
  }

// The content with the list title as the link ID (destination)
echo "<a id='".rawurlencode($aryList[0])."'>".$aryList[0]."</a>";
echo "The text is about Communications.";

ソース コードでは、スペースが %20 に置き換えられていることがわかりrawurlencode()ますが、ブラウザーのアドレス バーの URL には %20 がなく、代わりにスペースが含まれています。リンクをクリックしても何も起こりません。

使用時のソースコードrawurlencode():

// The list title links
<a href='#1.%20Communications'>1. Communications</a>
<a href='#2.%20Definitions%20and%20Conditions'>2. Definitions and Conditions</a>

// The list IDs (destination)
<a id='1.%20Communications'>1. Communications</a>
<a id='2.%20Definitions%20and%20Conditions'>2. Definitions and Conditions</a>

ブラウザは Iceweasel 17.0.9 FWIW です。

編集: durrruttiが言っ
たことからテストすると、ID ではなくアンカーのみの場合、完全に正常に動作します。 rawurlencode()

ただし、これでも ID に空白の問題が残ります。

ID ではなくアンカーのみがエンコードされたソース コード:

// The list title links
<a href='#1.%20Communications'>1. Communications</a>
<a href='#2.%20Definitions%20and%20Conditions'>2. Definitions and Conditions</a>

// The list IDs (destination)
<a id='1. Communications'>1. Communications</a>
<a id='2. Definitions and Conditions'>2. Definitions and Conditions</a>
4

1 に答える 1

2

要素 ID は、アルファベット文字 (AZ と az など) 以外で始めることはできません。それはあなたの問題だと思います。

更新:また、ID にパーセント記号を含めることはできません。

于 2013-10-22T21:27:30.987 に答える