dongpan1365 2017-10-20 15:30
浏览 42
已采纳

如何结合文本中单词的分离?

I've simple text:

$text = "БАДРЎ(Й) (ي(بدرو он ки рўи нозебу хунук до-
рад, бадафт, безеб, бадбашара; муќоб. Тез-тез зур - зур.
ОБАНДОМ آباندام маљ. обпайкар, нозукан- дом, латифбадан.
FБАФКАН آبافكن муњаррики обафкан, даст- гоњи обпошї.";

Here I want to combine words and get this result:

БАДРЎ(Й) (ي(بدرو он ки рўи нозебу хунук дорад, бадафт, безеб, бадбашара; муќоб. Тез-тез ганда. ОБАНДОМ آباندام маљ. обпайкар, нозукандом, латифбадан. FБАФКАН آبافكن муњаррики зур - зур обафкан, дастгоњи обпошї.

That is, you need to combine these words in this way:

до- рад to дорад

нозукан- дом to нозукандом

даст- гоњи to дастгоњи

I use this code for deleting :

$regex = '~-\R~';
$result = preg_replace($regex, '', $string);

And get only that result:

БАДРЎ(Й) (ي(بدرو он ки рўи нозебу хунук дорад, бадафт, безеб, бадбашара; муќоб. Тез-тез зур - зур. ОБАНДОМ آباندام маљ. обпайкар, нозукан- дом, латифбадан. FБАФКАН آبافكن муњаррики обафкан, даст- гоњи обпошї.

Could not combine these words:

нозукан- дом to нозукандом

даст- гоњи to дастгоњи

  • 写回答

4条回答 默认 最新

  • doukan4795 2017-10-20 19:48
    关注

    I suggest using

    $result = preg_replace('~\b-(?:\R|\h)\b~u', '', $string);
    

    See the regex demo

    Details

    • \b - a word boundary (the current position must be preceded with a word char
    • - - a hyphen
    • (?:\R|\h) - a line break sequence (\R) or (|) any horizontal whitespace (\h)
    • \b - a word boundary (there must be a word char immediately to the right of the current location)

    PHP demo:

    $string = "БАДРЎ(Й) (ي(بدرو он ки рўи нозебу хунук до-
    рад, бадафт, безеб, бадбашара; муќоб. Тез-тез зур - зур.
    ОБАНДОМ آباندام маљ. обпайкар, нозукан- дом, латифбадан.
    FБАФКАН آبافكن муњаррики обафкан, даст- гоњи обпошї.";
    $result = preg_replace('~\b-(?:\R|\h)\b~u', '', $string);
    echo $result;
    

    Output:

    БАДРЎ(Й) (ي(بدرو он ки рўи нозебу хунук дорад, бадафт, безеб, бадбашара; муќоб. Тез-тез зур - зур.
    ОБАНДОМ آباندام маљ. обпайкар, нозукандом, латифбадан.
    FБАФКАН آبافكن муњаррики обафкан, дастгоњи обпошї.
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥30 求解达问题(有红包)
  • ¥15 请解包一个pak文件