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- 

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

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

谢谢你的帮助。

4

4 回答 4

2

由于您只提供了一个示例,因此我只能猜测您要删除的内容。但是,您可以试试这个,它会删除由连字符包围的最右边的文本,以及它之前的单个空格:

$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

我认为您可以尝试以下方法:

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

结果将在 $content_arr

于 2013-02-21T16:57:42.567 回答
0

一种可能性是搜索字母数字字符 + 破折号之间的空格:

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

它会起作用,但它会删除所有匹配项,例如 -some text-,因此如果存在格式不同的行,您可能会遇到麻烦

于 2013-02-21T16:58:16.310 回答