删除2个字符之间但有条件的文本


Remove text between 2 characters but with conditions

我需要删除这个字符串中的文本:

bca.pzb.(4-86)11,52-十一和五十二-

我需要移除-eleven and fiftytwo-并离开bca.pzb. (4-86) 11,52

我试着用preg_match和其他方法来研究如何做到这一点,但我不知道如何识别"-"之间的文本。。。"-"answers"(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- 

每次加载某个网页时,我都会有大约200行这样的行。

我需要删除第二部分中的所有文本,其中数字被写成单词,并保留第一部分的所有内容。

谢谢你的帮助。

由于您只提供了一个示例,我只能猜测您试图删除的内容。但是,您可以尝试这样做,它删除了用连字符包围的最右边的文本,以及它前面的一个空格:

$string = 'bca.pzb. (4-86) 11,52 -eleven and fiftytwo-';
$removed = preg_replace('/ -[^-]*-$/', '', $string);
echo preg_replace("/-([^-]+)-$/", "", 'bca.pzb. (4-86) 11,52 -eleven and fiftytwo-');

我想你可以试试这样的东西:

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

结果将在$content_arr 中

一种可能性是搜索字母数字字符+短划线之间的空格:

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

它会起作用,但它会删除所有匹配项,比如-一些文本-,所以如果有不同格式的行

,您可能会遇到麻烦