2015-12-26 6 views
1

Я пробовал Google и ничего не помогал. Я неопытный с PHP. Надеюсь, вопрос ясен.Добавить пробел после определенного символа с php

Так что я хочу, чтобы поставить пробел после определенного символа в строке

как от:

1234b1 

к:

1234b 1 

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

ПРИМЕЧАНИЕ: Не нужно пить мне ложку.

+1

После 'b's? После альфа-символов? После нечисловых символов? Когда? – chris85

+0

Да. после b я хочу сделать пробел. @ chris85 – Error

ответ

6

Довольно элегантный способ сделать это с помощью regex:

$input = '1234b1'; 
$pattern = '/b/'; 
$replacement = '$0 '; 
$output = preg_replace($pattern,$replacement,$input); 

Запуск этого с интерактивной оболочки РНР:

$ php -a 
Interactive mode enabled 

php > $input = '1234b1'; 
php > $pattern = '/b/'; 
php > $replacement = '$0 '; 
php > $output = preg_replace($pattern,$replacement,$input); 
php > echo $output; 
1234b 1 

EDIT: в случае, если вы хотите, чтобы пропустить строку, вы обновляете $replacement с помощью "\$0\n", или, если хотите, новые строки: $0<br>:

$input = 'abbbbasasjscxxxxc'; 
$pattern = '/c/'; 
$replacement = "\$0\n"; //'$0<br>' for HTML 
$output = preg_replace($pattern,$replacement,$input); 
echo $output; 
+0

Я верю, что это только я, но это не работает? А как насчет пропуска линии? – Error

+0

@Error: были некоторые ошибки, теперь это должно сработать. Протестировал его на моей машине. –

+0

Спасибо, Виллем! Как насчет пропуска линии? @WillemVanOnsem – Error

1

Я думаю, вы можете уйти с простой заменой строки здесь.

$string = '1234b1'; 
echo str_replace('b', "b<br>\n", $string); 

Выход:

1234b 
1 

Демо: https://eval.in/493496https://eval.in/493503

Если персонаж не всегда b, хотя вам потребуется регулярное выражение.

Подход регулярных выражений, который заменит любой альфа-символ символом и новой строкой.

$string = '1234b1'; 
echo preg_replace('/([a-z])/', '$1' . "<br>\n", $string); 

Если только когда-либо замены b заменить [a-z] с b. [] - это класс символов, означающий, что символы внутри разрешены. a-z - это набор символов.

<br> s потому что, похоже, вы выводите это в браузере; если они не могут быть удалены. Любой не-браузер отобразит <br> буквально.

+0

Я согласен с тем, что в случае, если это только один символ, вы можете использовать 'str_replace' (+1 битва), но, как вы уже упоминали, с момента, когда вы хотите делать более сложные вещи, регулярное выражение, вероятно, более уместно. –

+0

@ chris85 как насчет пропуска линии? – Error

+0

@Error Обновлено оба ответа теперь добавляют новую строку после 'b'. Если вы хотите что-то другое, обновите свой вопрос с помощью конкретного примера. – chris85

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