0

このような日本語の文字列があります(データベースから取得)

$myString = "いっぱい< br />んどん"

API では入力文字列を URL エンコードする必要があるため、次を使用してエンコードします

urlencode($myString);

問題は、API プラットフォーム ページのテキストエリアにその文字列が表示されることです。

ご存じのように、HTML texarea では HTML < br /> を使用した改行は許可されていません。「& #10;」のみが許可されます 改行を表示します。

API platform のテキストエリアに $ myStringを表示する方法がわかりません

私の作業フロー: 私のウェブサイト -> $myString を API に渡す -> $myString が API プラットフォーム ページに表示されます (私のものではありません)。

アップデート:

APIはこんな感じ

< a href="diary:self?guid=ON&url=http%3A%2F%2Fredirect_uri.com&subject=%83e%83X%83g&body=....">Something< /a>

myString を body=... に渡す必要があります。

アップデート:

これは私が試したものです:

function convertBrTagtoASCII($string) {
    $string = str_replace(array("</br>", "</br >", "<br>", "<br >"), "&#10;", $string);
    return $string;
}

$converted = convertBrTagtoASCII($myString);

すべての br タグを & #10; に置き換え、次に urlencode($converted) を API リンクの "body" パラメータに渡します。テキストエリアの出力は

いっぱい&#10;んどん

プラットフォームは urldecode だけでなく、文字列もエスケープしているようです。:(

4

3 に答える 3

1

などの特別な HTML 文字をエスケープするには、 htmlentitiesを使用し<ます。

echo '<textarea>'.htmlentities($myString).'</textarea>'

textarea 要素では改行を使用できるため、それらに対して特別なエスケープを行う必要はありません。

編集:おそらく私は問題を誤解しており<br>、データベースにすでにタグがあります。その場合、これらのタグを改行に置き換えることができます。別の方法は、HTML 編集をサポートするTinyMCEなどのリッチ テキスト編集ボックスを使用することです。

于 2012-05-24T07:00:26.820 に答える
1

エンコーディングの問題ではなく、無効なデータの問題があります。API に送信する文字列は、API のコンテキストでは有効ではありません。と同じ問題が発生し"Hello<br />World"ます。

次の 3 つの可能性があります。

  • 文字列は"Hello&lt;br /&gt;World"または"いっぱい&lt; br /&gt;んどん"である必要があります。この場合、単純に (およびそのいとこ) を次のように修復できます。
  • 文字列は"Hello\nWorld"または"いっぱい\nんどん"である必要があります。この場合、urlencoding の前に正規表現または同様のツールを使用して修正する必要があります。
  • 文字列の形式が正しくありません: この場合、両方を拒否する必要があります:"Hello<br />World""いっぱい< br />;んどん"

要点は、これはエンコーディングまたはコードのプロパティではないということです。はい、明らかな欠陥を修正することはできますが、ゴールデン ルールはありません。

于 2012-05-24T07:06:54.167 に答える
0

改行を ASCII に変換します。次に、URL をエンコードします。次に、正規表現の置換を実行して、エンコードされた改行を変換します

%26%2310%3B

戻る

&#10;
于 2012-05-24T09:40:01.303 に答える