Требуется, применив строку-иголку needle
'аргентинаманитнегра'
к строке-стогу haystack
' Аргентина пр ро Аргентина манит негра бдщ негра '
, получить на выходе результат - 'Аргентина манит негра'
.
Как элегантнее всего осуществить задуманное, и возможно ли это сделать в один приём через регулярное выражение?
Для обработки полиндрома, вернее наибольшего под-полиндрома, я не представляю как обойтись без приведения строки к нижнему регистру и удалению пробелов, но хотелось бы, да в общем так и нужно по заданию, привести его именно в такой вид.
В регулярных выражениях не сильно силён, вот подумал может это возможно сделать более элегантно, чем сейчас пытаюсь сделать я, вычисляя кучу подстрок, их длины, подстроки с пробелами с разных позиций, их длины и вырезание по-средством mb_substr
результирующей строки из позиции и длин ранее определённых строк? :-)
' Аргентина пр ро Аргентина манит негра бдщ негра '
'аргентинаманитнегра'
'Аргентина манит негра'
Получилось нечто страшное... :-( Хотя и работает как нужно, но меня не покидает чувство, что эту функцию можно переписать красиво и элегантно на регулярках.
function format($str, $ndl)
{
$arr = preg_split('//u', $str, null, PREG_SPLIT_NO_EMPTY);
for($i=0,$l=mb_strlen($ndl); isset($arr[$i]); ++$i)
if (($s1 = trim(mb_substr($str, $i))) && mb_substr(mb_strtolower(str_replace(' ', '', $s1)), 0, $l) == $ndl)
for($i=0; isset($s1[$i]); ++$i)
if (($s2 = trim(mb_substr($s1, 0, ($i?-$i:null)))) && mb_strtolower(str_replace(' ', '', $s2)) == $ndl)
return $s2;
elseif (!isset($s1[$i+1]))
return false;
return false;
}
Ну если просто подогнать под условие :
$needle = 'аргентинаманитнегра';
$haystack = ' Аргентина пр ро Аргентина манит негра бдщ негра ';
array_map(function($word)use(&$return , $needle){
$return .= (strrpos($needle , $word) !== false ? $word.' ' : '');
} , array_unique(explode(' ' , mb_strtolower(trim($haystack)))));
echo(ucfirst($return));
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Здравствуйте! Пишу игру и столкнулся с одной проблемойУ меня есть 25 кнопок QPushButton в Ui
Допустим, я записал некоторую структуру в текстовый файл с помощью fwrite, например, 20 заводовКак я могу удалить нужные мне заводы? Можно ли стереть...