2016-06-20 3 views
-1

Мне пришла в голову необходимость использовать str_replace() для замены всех дефисов в строке пробелами. Достаточно просто:PHP str_replace() - Заменить альтернативным пространством?

$string = "Some-test-string"; 
$string = str_replace('-', ' ', $string); 

Дело в том, используя ' ' (строка с пустым пространством) в «замены» части str_replace() просто чувствует себя так грязно. Также кажется хрупким ... Выглядит тоже уродливо.

Нет ли лучшего варианта? Я попытался использовать шаблон регулярного выражения в разделе «замена», но это не сработало, оно получилось буквальным.

В идеале, что-то, как это было бы здорово, если это возможно:

$string = "Some-test-string"; 
$string = str_replace('-', '/\s/', $string); 

Спасибо!

Отредактировано: Заменено на все вызовы preg_replace() с str_replace() на предложение.

+1

Вы можете использовать шестнадцатиричное значение для пространства: '' 'preg_replace ("/ [-] + /", "\ x20", $ строка);' '', но я не знаю, если это делает его более чистым –

+0

Вам будет лучше с str_replace для этого. Я бы не стал беспокоиться о том, что он выглядит хрупким или уродливым, пока он работает, и его легко понять. Я бы использовал «вместо». –

+0

Абдулла Бахш - Это заменяет буквальным \ x20 .. Я должен уточнить, что хочу пространство в строке ... просто пытаюсь найти альтернативный способ представить замену в вызове preg_match(). – mbbentz

ответ

1

В этом случае я не вижу причин использовать регулярные выражения. Почему бы не использовать более простую функцию, например. strtr()?

$string = "Some-test-string"; 
$string = strtr($string, '-', ' '); 
+0

Спасибо ShiraNai7 - Я уже переключился на использование str_replace(), когда понял, что этот шаблон регулярного выражения слишком прост, чтобы требовать preg_replace(). Я обновил свой вопрос, чтобы отразить это. – mbbentz

Смежные вопросы