2013-08-25 2 views
0

Как я могу взорвать символ после каждого слова?Добавить символ после каждого слова

Я попытался следующие:

$query = implode("* ", preg_split("/[\s]+/", $query)); 

, но он всегда игнорирует одно слово. например: test test даст мне test* test, test даст мне test, тест тест тест тест даст мне test* test* test* test

также попытался $query = implode("*", str_split($query));, но это дает мне бред, если запрос на кириллице.

+0

Добавить '*' до конца '$ query' –

+0

Есть ли какие-либо проблемы с добавлением "'*'" вручную? например, 'implode (" * ", preg_split ("/[\ s] +/", $ query))." * ";' – bystwn22

ответ

1

implode присоединяется к строкам вместе и вставляет «клейкую строку» между каждым элементом.

Если вы хотите изменить каждую строку, вы можете использовать вместо этого array_map.

implode(array_map(function($item) { return $item . '* '; }, $array)); 

И я надеюсь, что вы не делаете фанки с запросом базы данных (учитывая ваше имя переменной). Если вы хотите использовать запросы переменной db, вместо этого используйте параметризованные запросы.

Другой «взломать», чтобы взрывать ваш массив, а затем вставить недостающую строку в конце результирующей строки:

implode('* ', $array) . '* '; 
+0

оба метода работали как шарм. благодаря! – user2696962

0

Попробуйте

<?php 

$str = 'test test test test test'; 
$str = implode("* ", explode(" ", $str))."* "; 

echo $str; 
0

Попробуйте другие ответы или вы можете также использование preg_replace. Но не рекомендуется. Избегайте использования regex, когда есть доступные чистые альтернативы.

<?php 
    $query = preg_replace("/[\s]+/", "* ", $query)."*"; 
    echo $query; 
?> 

Использование array_map

<?php 
    $query = explode(" ", "test test test test test"); 
    $query = array_map(function($val) { 
    return trim($val)."* "; 
    }, $query); 
    $query = implode("", $query); 
    echo $query; 
?> 
Смежные вопросы