プロが教える店舗&オフィスのセキュリティ対策術

たとえば、

<a
href="~"
target="_blank">

というタグの中の改行文字(\n)を削除する正規表現を教えてください。
ただし、preg_replace_callbackは使わないでください。

A 回答 (3件)

一度にやろうとするからむずかしいのでしょう.


・ #1で全部改行を消す.
・ "/>"を "/>\n/" で置換
でいいのでは? 1度の正規表現で行ないたいということならダメでしょうけど.

この回答への補足

一度でなければ、preg_replace_callbackを使います。
つまり、この質問は純粋に正規表現の勉強のためにさせてもらっています。

全ての改行を削除してはいけません。タグの外の改行まで削除されてしまいます。あくまでタグの中だけです。
また、"/>"ですが、これは"/>/"でしょうか?

補足日時:2006/04/09 23:27
    • good
    • 0

連続している文字列内の一部であるという仕様さえ


書かずに、回答に対して「質問をよくよめ」
といわれてしまうのは心外なので、いくつか
案はあるのですが本件について私は回答を差し控えます。

この回答への補足

「タグの中」といった時点で「連続した文字列」であることは明白です。第一、サンプルの文字列が全てであれば、正規表現を使う必要はありません。str_replaceで十分です。
もう一度質問を読んでみてください。

補足日時:2006/04/09 23:23
    • good
    • 0

$html="<a\nhref=\"#\"\ntarget=\"_blank\">";


$html=preg_replace('/\n/i','',$html);
ですが、そのままだと返って来るデータは
「<ahref="#"target="_blank">」という
つながったデータになります。
とりあえずは単純にスペースと置換するので
良いと思いますけど。
$html=preg_replace('/\n/i',' ',$html);

ちなみに改行は使用環境によって異なりますので
\rもはずす必要があるかもしれません。
よく検討してください

この回答への補足

スペースがつながってしまうのは気にしないでください。投稿時に削除されてしまったようです。また、改行文字も\nで統一済みです。

ご提案のパターン'/\n/i'ですが、これではタグ外の改行も削除されてしまいますので、質問の要件を満たせません。iも不要です。質問をもう一度読んでみてください。

補足日時:2006/04/09 19:31
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!