Php 如何在文本中组合单词的分隔?
我有简单的文字: $text = "БАДРЎ(Й) (ي(بدرو он ки рўи нозебу хунук до- рад, бадафт, безеб, бадбашара; муќоб. Тез-тез зур - зур. ОБАНДОМ آباندام маљ. обпайкар, нозукан- дом, латифбадан. FБАФКАН آبافكن муњаррики обафкан, даст- гоњи обпошї."; 只得到这个结果: БАББПЎ(Й)(ي(1576年)在1576年(1576年)的一个州(1576年)的一个州(1576年)的州(1576年)的州(1576年)的州(州)的州(州)的州(州)的州(州)的州(州)的州(州(州)的州(州)的州(州)的州(州)的州(州(州)的州)的州(州)的州(州)的州(州(州)的州)的州(州(州)的州(州)的州(州)的州(州(州)的州)的州(州(州)的州(州)的州(州)的)的州(州)的州(州(州(州)的州)的州(州(州)的州)的)的州(州(州)的州(州(州)的州(州(州(州)的州)的)的州(州)的州(FБАФааааа。FБАФАааааааааааааа,аааааа 无法组合这些词: ззаа-аа至заааааPhp 如何在文本中组合单词的分隔?,php,regex,Php,Regex,我有简单的文字: $text = "БАДРЎ(Й) (ي(بدرو он ки рўи нозебу хунук до- рад, бадафт, безеб, бадбашара; муќоб. Тез-тез зур - зур. ОБАНДОМ آباندام маљ. обпайкар, нозукан- дом, латифбадан. FБАФКАН آبافكن муњаррики обафкан, даст- гоњи обпошї."; 只得到这个结果: БАББПЎ(Й)(
аааа-аааања至ааааааааања1072
$regex = '~- ~';
$result = preg_replace($regex, '', $string);
我没有能力测试这个,但是你可以把两者结合起来
$regex = '~-(\R| )~';
$result = preg_replace($regex, '', $string);
请尝试以下正则表达式:
preg_replace("/((?<![ ])[-][ \r\n]+)/", '', $text)
preg\u replace(“/(?您需要替换\R
或空格,并添加单词边界(\b
)。最后,由于您现在处理的是单词,因此需要添加空格,以便引擎考虑UTF-8
<?php
$text = "БАДРЎ(Й) (ي(بدرو он ки рўи нозебу хунук до-
рад, бадафт, безеб, бадбашара; муќоб. Тез-тез зур - зур.
ОБАНДОМ آباندام маљ. обпайкар, нозукан- дом, латифбадан.
FБАФКАН آبافكن муњаррики обафкан, даст- гоњи обпошї.";
$regex = '/\b-(\R| )\b/u';
$result = preg_replace($regex, '', $text);
echo $result;
我建议使用
$result = preg_replace('~\b-(?:\R|\h)\b~u', '', $string);
见
详细信息
\b
-单词边界(当前位置前面必须有单词字符
-
-连字符
(?:\R |\h)
-换行符序列(\R
)或(|
)任何水平空白(\h
)
\b
-单词边界(当前位置右侧必须有一个单词字符)
:
输出:
БАДРЎ(Й) (ي(بدرو он ки рўи нозебу хунук дорад, бадафт, безеб, бадбашара; муќоб. Тез-тез зур - зур.
ОБАНДОМ آباندام маљ. обпайкар, нозукандом, латифбадан.
FБАФКАН آبافكن муњаррики обафкан, дастгоњи обпошї.
它可以工作,但有点不正确。您不需要删除“-"简而言之:谢谢大家的回答。哪种响应代码工作得更快?我希望进行一次比较性的回顾。我宁愿担心这种情况下的正则表达式精度,而不是速度。是的,正如@WiktorStribiżew建议的那样,制作一些测试用例并在它们上运行所有正则表达式,寻找哪个更精确。只有你才能工作@Wiktor Stribiżew'answer and answer'@ishegg'非常感谢您的回答,但您需要将这个单词组合为。
$string = "БАДРЎ(Й) (ي(بدرو он ки рўи нозебу хунук до-
рад, бадафт, безеб, бадбашара; муќоб. Тез-тез зур - зур.
ОБАНДОМ آباندام маљ. обпайкар, нозукан- дом, латифбадан.
FБАФКАН آبافكن муњаррики обафкан, даст- гоњи обпошї.";
$result = preg_replace('~\b-(?:\R|\h)\b~u', '', $string);
echo $result;
БАДРЎ(Й) (ي(بدرو он ки рўи нозебу хунук дорад, бадафт, безеб, бадбашара; муќоб. Тез-тез зур - зур.
ОБАНДОМ آباندام маљ. обпайкар, нозукандом, латифбадан.
FБАФКАН آبافكن муњаррики обафкан, дастгоњи обпошї.