我需要删除此字符串中的文字:
bca.pzb。 (4-86)11,52 -eleven和fiftytwo -
我需要移除-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条这样的行。
我需要删除第二部分中的文本,其中数字写为单词,并留下第一部分。
感谢您的帮助。
答案 0 :(得分:2)
由于您只提供了一个示例,我只能猜测您要删除的内容。但是,你可以尝试这个,它删除连字符包围的最右边的文本,以及它前面的单个空格:
$string = 'bca.pzb. (4-86) 11,52 -eleven and fiftytwo-';
$removed = preg_replace('/ -[^-]*-$/', '', $string);
答案 1 :(得分:2)
echo preg_replace("/-([^-]+)-$/", "", 'bca.pzb. (4-86) 11,52 -eleven and fiftytwo-');
答案 2 :(得分:0)
我认为你可以尝试类似的东西:
的preg_match( '/-(.*)-/ S',$ HTML,$ content_arr);
结果将在$ content_arr
中答案 3 :(得分:0)
一种可能性是在短划线之间搜索字母数字字符+空格:
$text = preg_replace('/\-[\w\s]+\-/', '', $originalText);
它会起作用,但它会删除所有匹配项,例如-some text-,所以如果行格式不同,你可能会遇到麻烦