2015-05-05 3 views
4

Ниже код будет эхо, как этотКак я могу поставить '-' между словами в этом коде php?

('nice apple'),(' nice yellow banana'),(' good berry ') 

то, что мне нужно сделать, это то, что мне нужно, чтобы они были как этот

('nice-apple'),(' nice-yellow-banana'),(' good-berry ') 

Задача состоит в том, что я не мог коснуться $ Обл, а затем я нужно использовать '-' для соединения слов, если между ними есть пробел. Если использовать str_replace space, это будет что-то вроде ---- nice-apple-. как я могу достичь чего-то подобного («nice-apple»), оцените.

<?php 
$str="nice apple, 
    nice yellow banana,  
    good berry 
 "; 

echo $str = "('" . implode("'),('", explode(',', $str)) . "')"; 
?> 

ответ

3

Попробуйте str_replace

$str="nice apple, 
    nice yellow banana,  
    good berry 
"; 

$str = array_map(function($dr){ return preg_replace('/\s+/', '-', trim($dr));},explode(',',$str)); 
$str = implode(',',$str); 

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

Выход:

('nice-apple'),('nice-yellow-banana'),('good-berry') 
+2

Вы изменили вход, чтобы удалить все лишние пробелы, которые вызвали проблемы – Barmar

+0

О, я думал, что он поместил его таким образом для лучшего обзора –

+0

Barmar прав, те пространства вызывают проблемы. – conan

0

вам нужно, чтобы избавиться от новых линий первого, то он будет работать.

<?php 
$str="nice apple, 
    nice yellow banana, 
    good berry 
"; 

$arr = explode(',', str_replace([ "\r\n", "\n" ], "", $str)); 

$arrCount = sizeOf($arr); 

for($x = 0; $x < $arrCount; $x++) { 
    while (preg_match('/(\w)\s(\w)/', $arr[$x])) { 
     $arr[$x] = preg_replace('/(\w)\s(\w)/', '$1-$2', $arr[$x]); 
    } 
} 



echo $str = "('" . implode("'),('", $arr) . "')"; 
?> 

('nice-apple'),(' nice-yellow-banana'),(' good-berry ')

+2

Вы не ставили дефис между словами. Вы прочитали вопрос? – Barmar

+0

да, я только что понял момент, когда я опубликовал обновление за 30 секунд. – Augwa

+0

О, я вижу, вы уже приняли, я думал, что вы хотите сохранить пространство, поэтому я написал код, чтобы сохранить его. – Augwa

0

его немного сложнее. Попробуйте с -

$str="('nice apple'),(' nice yellow banana'),(' good berry ')"; 

$v = explode(',', $str); // generate an array by exploding the string by `,` 
foreach($v as $key => $val) { 
    $temp = trim(str_replace(["(", "'", ")"], "", $val)); //remove the brackets and trim the string 
    $v[$key] = "('".str_replace(" ", "-", $temp)."')"; // place the `-`s 
} 
$new = implode(",", $v); // implode them again 
var_dump($new); 
Смежные вопросы