1

私はここでもう一度尋ねます:)

PHP に次のような文字列があるとします。

Lorem ipsum dolor sit amet, consectetur
adipiscing elit. "Sed et est eget lorem congue
eleifend. Fusce luctus"

右、これらの 2 つの引用符の文字列が表示されます ---> "、右、db でこれらの 2 つの引用符の間にテキストがある場合、このような改行を含める必要はありません。方法はありますか、正規表現でPHP の preg_replace 関数は、これら 2 つのシンボルの間のブレークラインをターゲットにして削除しますか?

時間をありがとう、マート

4

2 に答える 2

2

一致またはネストされた要素 (この場合は引用符の一致) に関する問題は、通常、正規表現では少し扱いに​​くいものです。

まず、ここで仮定をさせてください: 引用符内のエスケープされた引用符は、入力では許可されていません (つまり、Lorem "ipsem \" dolor"このようなものはありません)。

この仮定で、あなたの問題はこれに要約されます: (文字列の最後まで数えて)\n奇数が続く a を見つけます。"この条件を確実にするために、先読みを使用できます。先頭または末尾の空白の問題を回避するために、前後の任意の空白に一致\nさせ、単一のスペースに置き換えることができます。

$result = preg_replace('/\s*\n\s*(?=[^"]*"(?:[^"]*"[^"]*")*[^"]*$)/', ' ', $input);

\n相互運用性のために、これをに置き換えることができます[\r\n]

于 2012-11-26T23:12:07.740 に答える
0

http://www.php.net/manual/en/mysqli.real-escape-string.phpなど、組み込みのエスケープ機能を使用できるはずです。つまり、情報は保持されますが、データベース フレンドリーになります。

于 2012-11-26T23:10:11.907 に答える