Вы можете взять объект с произвольным количеством свойств и создать массив объектов.
var a = [1, 2, 3],
b = ["a", "b", "c"],
result = Object
.entries({ a, b })
.reduce((r, [k, a]) => {
a.forEach((v, i) => Object.assign(r[i] = r[i] || {}, { [k]: v }));
return r;
}, []);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
Вы можете обрезать снова, чтобы удалить лишние '-' с обеих сторон строки.
$slug = strtolower(trim(preg_replace('/[^A-Za-z]+/', '-', 'top-5-ways--to-avoid-list-')));
echo trim($slug, '-');
Результат: список лучших способов избежать
slugify ваша строка таким образом, он удалит нежелательные символы, включая -
.
trim () принимает в качестве 2-го параметра все символы, которые вы хотите удалить . Посмотрите на прокомментированную строку THIS WILL FIX YOUR EXISTING PROBLEM
<?php
function slugify($string, $delimiter = '-'){
$clean = preg_replace("/[^a-zA-Z\/_|+ -]/", '', $string);
$clean = strtolower($clean);
$clean = preg_replace("/[\/_|+ -]+/", $delimiter, $clean);
$clean = trim($clean, $delimiter); // THIS WILL FIX YOUR EXISTING PROBLEM
return $clean;
}
echo slugify('-Top ways-to avoid list-');
echo PHP_EOL;
echo slugify('top 5 ways to get in top');
?>
Вывод:
top-ways-to-avoid-list
top-ways-to-get-in-top
DEMO: https: //3v4l.org/ljtlZ
ИЛИ с вашим существующим кодом, обрезающим несколько символов -
или пробелы
<?php
echo strtolower(trim(preg_replace('/[^A-Za-z]+/', '-', '-Top ways-to avoid list-'),'- '));
echo PHP_EOL;
echo strtolower(trim(preg_replace('/[^A-Za-z]+/', '-', 'top 5 ways to get in top'),'- '));
?>
ДЕМО: [ 1119] https://3v4l.org/aBtHI