1

次のようなテキストがあります: Senkatel Maximus 10.1" "White"

引用符を削除したいが、引用符はインチ仕様 10.1" のままにしておく

正規表現を使用してみましたが、可変長の否定先読みをサポートしていません

これ: Senkatel Maximus 10.1" "White"

次のようになる必要があります。 Senkatel Maximus 10.1" White

テキストのインチを殺さずに引用符を削除するための一般的な解決策として必要なので、可能な場合はSenkatel Maximus 10.1" "Moonlight blue"とのようなもの"Senkatel Maximus 10.1""も機能するはずです。

4

4 に答える 4

2

以下は、このページに記載されているほとんどの状況で機能します。

$newStr = preg_replace('#(^|[^0-9])"([^"]+)"#','$1$2',$str);

(一部) テスト結果:

"test" Senkatel "woo69" 2"-5" Maximus 10.1" "White"
test Senkatel woo69 2"-5" Maximus 10.1" White

Product: "Senkatel Maximus 10.1""
Product: Senkatel Maximus 10.1"

Dims: 4" x 6"
Dims: 4" x 6"

"Film: 300"
Film: 300

文字列の途中にインチが含まれていると問題が発生します。この場合、 "Senkatel 10.1" Maximus"より複雑なコード セットが必要になります。これはおそらく、ほとんどの関数の最も単純なコードです。

于 2013-09-09T10:41:46.187 に答える
2

これにより、数値の直後にない qoute が削除されます

preg_replace('/([^0-9])"/', '$1', $string);

しかし、テキストが次のようなものである場合: 次のようSenkatel Maximus 10.1" "White 1000" になります:Senkatel Maximus 10.1" White 1000"

引用符付きの数字とインチ指定を区別するのは本当に難しい

于 2013-09-09T10:41:59.277 に答える
2

で仕事ができるようです

preg_replace('/"(\S*?)"/', '$1', $string);

これにより、文字列の空白以外の部分から引用符が削除されます。一重引用符 (残す必要がある) と引用符のペア (削除する必要がある) の間に少なくとも 1 つの空白文字があり、引用符のペアに空白が含まれていないと仮定すると、正常に動作するはずです。

于 2013-09-09T10:35:05.980 に答える