John
John

Reputation: 468

How to clear (delete) hyphenation from a text?

In a book, I have words with hyphenation and I must delete those hyphens and connect the words. But we have a word with symbol "-". How can I delete hyphens in this situation?

Example text from a book:

$text = "
БАДРЎ(Й) (ي(بدرو он ки рўи нозебу хунук до-
рад, бадафт, безеб, бадбашара; муќоб.
хушрўй. БАДСОБИЌА بدسابقه он ки пешинаи хуб надо-
рад ва мардум ўро ба бадї мешиносанд. БАДСУРАТ بدصورت бадшакл, бадафт, бад-
андом; нозеб, зиштрўй. БАЙ-БАЙ بي بي нидо вањ-вањ, њай-њай (бо ало-
мати тањсин ва тааљљуб). БЕСАРУНЎГЇ بيسرونوگي 1. бесарунўг будан,
бетартибї, бесарусомонї. 2. чигилї, печи-
дагї, дарњам-барњамї. а) бесаранљом, парешонњол; б) бетартиб,
дарњаму барњам: бесару сомон шудани кор;
бесару тан белибос; луч, урён, барањна; бе-
сар-бесар гаштан худсарона овора гаштан.
";

I tried:

$search = array("-", "- ", " -", " - ");
$replace = array("", "", "", "");
$result = str_replace($search, $replace, $text);

Output:

БАДРЎ(Й) (ي(بدرو он ки рўи нозебу хунук до рад, бадафт, безеб, бадбашара; муќоб. хушрўй. 
БАДСОБИЌА بدسابقه он ки пешинаи хуб надо рад ва мардум ўро ба бадї мешиносанд.
БАДСУРАТ بدصورت бадшакл, бадафт, бад андом; нозеб, зиштрўй. 
БАЙБАЙ بي بي нидо вањвањ, њайњай (бо ало мати тањсин ва тааљљуб). 
БЕСАРУНЎГЇ بيسرونوگي 1. бесарунўг будан, бетартибї, бесарусомонї. 2. чигилї, печи дагї, дарњамбарњамї. а) бесаранљом, парешонњол; б) бетартиб, дарњаму барњам: бесару сомон шудани кор; бесару тан белибос; луч, урён, барањна; бе сарбесар гаштан худсарона овора гаштан.

The desired result would be like this:

БАДРЎ(Й) (ي(بدرو он ки рўи нозебу хунук дорад, 
бадафт, безеб, бадбашара; муќоб.
хушрўй. БАДСОБИЌА بدسابقه он ки пешинаи хуб надорад 
ва мардум ўро ба бадї мешиносанд. БАДСУРАТ بدصورت бадшакл, бадафт, 
бадандом; нозеб, зиштрўй. БАЙ-БАЙ بي بي нидо вањ-вањ, њай-њай (бо 
аломати тањсин ва тааљљуб). БЕСАРУНЎГЇ بيسرونوگي 1. бесарунўг будан,
бетартибї, бесарусомонї. 2. чигилї, печидагї, дарњам-барњамї. 
а) бесаранљом, парешонњол; б) бетартиб,
дарњаму барњам: бесару сомон шудани кор;
бесару тан белибос; луч, урён, барањна; 
бесар-бесар гаштан худсарона овора гаштан.

Upvotes: 1

Views: 113

Answers (3)

user1506104
user1506104

Reputation: 7086

This is close to what you are looking for:

<?php

$string = "БАДРЎ(Й) (ي(بدرو он ки рўи нозебу хунук до-
рад, бадафт, безеб, бадбашара; муќоб.
хушрўй. БАДСОБИЌА بدسابقه он ки пешинаи хуб надо-
рад ва мардум ўро ба бадї мешиносанд. БАДСУРАТ بدصورت бадшакл, бадафт, бад-
андом; нозеб, зиштрўй. БАЙ-БАЙ بي بي нидо вањ-вањ, њай-њай (бо ало-
мати тањсин ва тааљљуб). БЕСАРУНЎГЇ بيسرونوگي 1. бесарунўг будан,
бетартибї, бесарусомонї. 2. чигилї, печи-
дагї, дарњам-барњамї. а) бесаранљом, парешонњол; б) бетартиб,
дарњаму барњам: бесару сомон шудани кор;
бесару тан белибос; луч, урён, барањна; бе-
сар-бесар гаштан худсарона овора гаштан.";

$pattern = '/(\w+)-(\s+)(\w+)/u';
$replacement = '${2}${1}${3}';
echo preg_replace($pattern, $replacement, $string);

?>

Sample output:

БАДРЎ(Й) (ي(بدرو он ки рўи нозебу хунук 
дорад, бадафт, безеб, бадбашара; муќоб.
хушрўй. БАДСОБИЌА بدسابقه он ки пешинаи хуб 
надорад ва мардум ўро ба бадї мешиносанд. БАДСУРАТ بدصورت бадшакл, бадафт, 
бадандом; нозеб, зиштрўй. БАЙ-БАЙ بي بي нидо вањ-вањ, њай-њай (бо 
аломати тањсин ва тааљљуб). БЕСАРУНЎГЇ بيسرونوگي 1. бесарунўг будан,
бетартибї, бесарусомонї. 2. чигилї, 
печидагї, дарњам-барњамї. а) бесаранљом, парешонњол; б) бетартиб,
дарњаму барњам: бесару сомон шудани кор;
бесару тан белибос; луч, урён, барањна; 
бесар-бесар гаштан худсарона овора гаштан.

Upvotes: 2

Jan
Jan

Reputation: 43169

You may be looking for

-\R

This needs to be replaced by '', see a demo on regex101.com.


In PHP:

$regex = '~-\R~';
$new_text = preg_replace($regex, '', $text);

See a demo on ideone.com.

Upvotes: 3

rickdenhaan
rickdenhaan

Reputation: 11328

I'm making an assumption: if the word is hyphenated in a way you want to undo, it will be at the end of the line.

You can use preg_replace() to do that:

$search = "/-\n/";
$replace = "";
preg_replace($search, $replace, $text);

This will search for any places where a "-" is followed by a newline character (if this came from a Windows-based system, you may need to replace "\r\n" instead of just "\n"), and replaces it with an empty string, thus removing the hyphen and the newline character.

Note that $search needs to be in double quotes for the "\n" to be parsed properly.

Upvotes: 3

Related Questions