編集:他の人が読んでいる場合、これは解決されています。%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>