0

この文字列のテキストを削除する必要があります:

bca.pzb. (4-86) 11,52 -イレブンとフィフティツー-

削除-eleven and fiftytwo-して残す必要がありますbca.pzb. (4-86) 11,52

などで調べてみたpreg_matchのですが、"-"..."-" と "(4-86)" の "-" の間にあるテキストを認識する方法がわかりません。 .

「(4-86)」の「-」を無視して、「-」の間のテキストを削除するにはどうすればよいですか?

ヒントをくれた人に感謝します。

編集:

すべての答えをありがとう!リクエストに応じて、ここでより多くのデータを報告します。このようにフォーマットされたすべてのテキスト行があります。もちろん、数値と文字列を変更できますが、それらはすべて次のようになります。

54 pzt. 9,42 -nine and fortytwo-
66 pzt. 6,54 -six and fiftyfour-
23 pzt. 4,62 -four and sixtytwo -
dxd.pzt.(7-8) 15,17 -fifteen and seventeen-
dxd.pzt.(1-5) 5,84 -five and eightyfour-
dxd.pzt.(4-8) 29,92 -twentynine and ninetytwo-
dxd.pzt.(5-3) 4,61 -four and sixtyone-
dxd.pzt.(4-1) 4,42 -four and fourtytwo- 

特定の Web ページをロードするたびに、これらの行が 200 ほどあります。

数字が単語として書かれている 2 番目の部分のテキストをすべて削除し、最初の部分をすべて残す必要があります。

ご協力いただきありがとうございます。

4

4 に答える 4

2

例を1つだけ提供しているので、削除しようとしているものを推測することしかできません。ただし、これを試すことはできます。これにより、ハイフンで囲まれた右端のテキストと、その前の1つのスペースが削除されます。

$string = 'bca.pzb. (4-86) 11,52 -eleven and fiftytwo-';
$removed = preg_replace('/ -[^-]*-$/', '', $string);
于 2013-02-21T16:59:02.117 に答える
2
echo preg_replace("/-([^-]+)-$/", "", 'bca.pzb. (4-86) 11,52 -eleven and fiftytwo-');
于 2013-02-21T17:01:13.187 に答える
0

1つの可能性は、英字+ダッシュ間のスペースを検索することです。

$text = preg_replace('/\-[\w\s]+\-/', '', $originalText);

動作しますが、-some text-のようなすべての一致が削除されるため、フォーマットが異なる行があると問題が発生する可能性があります

于 2013-02-21T16:58:16.310 に答える
0

次のようなものを試すことができると思います:

preg_match('/-(.*)-/s',$html,$content_arr);

結果は $content_arr になります

于 2013-02-21T16:57:42.567 に答える