Reputation: 468
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
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
Reputation: 43169
You may be looking for
-\R
This needs to be replaced by ''
, see a demo on regex101.com.
PHP
:
$regex = '~-\R~';
$new_text = preg_replace($regex, '', $text);
See a demo on ideone.com.
Upvotes: 3
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