<?php
$string = 'Едно две шест. Едно две три четири. Едно две пет. Едно две две.';
$separator = '.';
$sentences = explode($separator, $string);
foreach ($sentences as $key => $sentence) {
if (mb_strlen(end(explode(' ', $sentence))) >= 5) {
$array['clear'] = str_replace($sentence.$separator, '', $string);
$array['removed'][] = $sentence.$separator;
}
}
echo "<pre>";
var_dump($array);
$sentences = explode(". ", $string);
$new_string = "";
$j = 1;
foreach($sentences as $sentences_el) {
$new_string .= $sentences_el.".";
if($j % 3 == 0) {
$new_string .= "<br><br>";
}
$j++;
}
echo $new_string ;
връща фалсе, иначе ме уби с тоя кодdjman каза:Друго решение
Код:$str = "Едно две шест. Едно две три четири. Едно две пет. Едно две две."; $res = mb_split('(?<=\S{5,}\.\s)', $str); print_r($res);
uphero каза:връща фалсе, иначе ме уби с тоя код
Всичко на всичко един ред
Array
(
[0] => Едно две шест. Едно две три четири.
[1] => Едно две пет. Едно две две.
)
$str = "Едно две шест. Едно две три четири. Едно две пет. Едно две две.";
preg_match_all("/(\S.+\b\S{5,}\.)|(\S.+$)/uU", $str, $res, PREG_SET_ORDER);
$res = array_map('current', $res);
var_dump($res);
array(2) {
[0]=>
string(62) "Едно две шест. Едно две три четири."
[1]=>
string(47) "Едно две пет. Едно две две."
}
djman Интересно всички функции работят от php4 нагоре, но реално не работи. Дали има някъде грешка, която не виждам, как ли не го пробвам, но не успявам да го подкарамdjman каза:Интересно, явно "variable-length lookbehind" не работи в PHP, освен когато работи :think:
Ето още един вариант...
Код:$str = "Едно две шест. Едно две три четири. Едно две пет. Едно две две."; preg_match_all("/(\S.+\b\S{5,}\.)|(\S.+$)/uU", $str, $res, PREG_SET_ORDER); $res = array_map('current', $res); var_dump($res);
array(2) {
[0]=>
string(62) "Едно две шест. Едно две три четири."
[1]=>
string(47) "Едно две пет. Едно две две."
}
cHuBakA каза:djman Интересно всички функции работят от php4 нагоре, но реално не работи. Дали има някъде грешка, която не виждам, как ли не го пробвам, но не успявам да го подкарамdjman каза:Интересно, явно "variable-length lookbehind" не работи в PHP, освен когато работи :think:
Ето още един вариант...
Код:$str = "Едно две шест. Едно две три четири. Едно две пет. Едно две две."; preg_match_all("/(\S.+\b\S{5,}\.)|(\S.+$)/uU", $str, $res, PREG_SET_ORDER); $res = array_map('current', $res); var_dump($res);
array(2) {
[0]=>
string(62) "Едно две шест. Едно две три четири."
[1]=>
string(47) "Едно две пет. Едно две две."
}
Едно две шест. Едно две три четири.
<br>
Едно две шест. Едно две три четири.
<br>
Едно две шест. Едно две три четири.
<br>
implode("<br>", $res);
cHuBakA каза:Благодаря много!!!!!!!!
След 4 дни чудене и проби успях да разбера защо кода не работеше. Проблема се оказа , в кирилицата. С латинските букви работи супер. Обаче не откривам начин да тръгне на кирилица :| preg_match_all дали работи с кирилица??
$str = "Четири. Едно две шест. Едно две три четири. Аааааа. ааааааа Четири. Едно две пет. Едно две две.";
preg_match_all("/\S.*\S{5,}\.|\S.*$/uU", $str, $res, PREG_SET_ORDER);
array(5) {
[0]=>
string(13) "Четири."
[1]=>
string(62) "Едно две шест. Едно две три четири."
[2]=>
string(13) "Аааааа."
[3]=>
string(28) "ааааааа Четири."
[4]=>
string(47) "Едно две пет. Едно две две."
}
djman каза:Да, пробвай да добавиш едно ".+"| най-отпред: ".+"|\S{5,}\.|\S.*\S{5,}\.|\S.*$
Това цялото нещо работи защото PHP поддържа U (Ungreedy) modifier.