2012-05-08 1 views
1

У меня есть динамическое значение, которое хранится в переменной PHP. Переменная содержит строку данных, которая показывает, какие флажки были нажаты. Он вернулся, как так: ОПЦИЯ1, option2, OPTION3, ОПЦИЯ4 .....Зачищающие запятые из PHP

Я хотел бы вычистить запятые так это просто Option1 Option2 Вариант3 ОПЦИЯ4 ....

Мой код:

<?php 
    $type = the_field('type_of_work'); 
    $type = str_replace(",", "",$type); 
    echo $type; 
?> 

По какой-то причине запятые все еще отображаются. Любая идея, почему и как я могу это исправить? Просто, чтобы вы знали, the_field ('type_of_work') - это способ вытащить дополнительные пользовательские поля из backend, но не должен иметь отношение к этому вопросу, поскольку он перенастраивает строку с запятыми. Есть предположения?

UPDATE: Я буду об этом по-другому, как так:

if(in_array('brand-id', get_field('type_of_work'))): 
    echo "brand-id"; 
endif; 

echo " "; 

if(in_array('print', get_field('type_of_work'))): 
    echo "print"; 
endif; 

так далее ....

+0

Возможная проблема кодирования символов? – davidethell

+0

возможно .... неуверенный на данный момент – JCHASE11

+0

Ваши изменения немного озадачивают, потому что это действительно не объясняет проблему лучше. Можете ли вы предоставить некоторые примерные значения для '$ type' или' type_of_work'? – Lix

ответ

5

Существует что-то еще вы не включая. Код, который вы опубликовали, отлично работает. Если вы все еще видите запятую, здесь здесь играет что-то другое.

<?php 
    $type = the_field('type_of_work'); 
    $type = str_replace(",", "",$type); 
    echo $type; 
?> 

Это префекта время die так что вы знаете наверняка.

<?php 
die(str_replace(',', '',the_field('type_of_work'))); 
?> 
+0

Я полагаю, вы правы ... есть что-то еще. Похоже, это пользовательское поле wordpress. но это странно, потому что он возвращает основную строку ... – JCHASE11

+1

@xeo - не так драматичен: P – Lix

0

регулярное выражение замены

preg_replace("/,/", "", $string); 
+6

Это в основном гораздо менее эффективная версия опубликованного автором автора. –

0

Вы можете попробовать взрывая их в массив, а затем взрывается их обратно ...

$split = "super,cali,fragilistic,expi,alidocious"; 
$arr = explode(",",$split); 
$finalStr = implode(" ",$arr); 
echo $finalStr; 

super cali fragilistic expi alidocious


Docs для implode и explode.

2

Хотя код, который вы должны работать при условии, отлично, может я предлагаю использовать вместо этого:

$type = explode(',', $type); 

Это превратит его в массив значений. Было бы также целесообразно, чтобы каждое из значений было равно trim().

Таким образом, вместо того, чтобы:

$item = 'Item1 Item2 Item3'; 

Вы бы получить массив:

$item = array('Item1', 'Item2', 'Item3'); // Assuming each value is `trim()`ed 
+0

yep, не работает, как все остальные ответы! Я возвращаюсь к чертежной доске! – JCHASE11

+0

@ JCHASE11, предоставить дополнительную информацию (точный код, возможно?), И мы сможем помочь вам лучше :) – 0b10011

0

Это трюк:

<?php 
$type = get_field('type_of_work'); 
$type = implode(' ', $type); 
echo $type; 
?> 

Или просто:

<?php echo implode(' ', get_field('type_of_work')); ?> 

потому что get_field ist массив.