2015-05-22 1 views
-1

У меня есть следующий пункт:Преобразовать первый символ в верхний регистр в каждой новой строки в PHP

This is the first line. 
this is the second line. 
we live in Europe. 
this is the fourth line. 

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

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

This is the first line. 
This is the second line. 
We live in Europe. 
This is the fourth line. 

До сих пор, я в состоянии преобразовать первый символ в верхний регистр, но он преобразует первые символы каждого слова не переводы строк с помощью ucfirst() и ucword()

echo ucfirst($str); 

Есть ли способ решить эту проблему с помощью ucfirst() или preg_replace() функции?

Спасибо!

+0

Помогает ли это? http://stackoverflow.com/questions/5383471/how-to-capitalize-first-letter-of-first-word-in-a-entent – nomistic

+0

Как создаются эти абзацы? Вы можете probaby сделать это в CSS, а не PHP. –

ответ

0

Другой способ сделать это:

<?php 

    function foo($paragraph){ 

     $parts = explode("\n", $paragraph); 
     foreach ($parts as $key => $line) { 
      $line[0] = strtoupper($line[0]); 
      $parts[$key] = $line; 
     } 

     return implode("\n", $parts); 
    } 

    $paragraph = "This is the first line. 
    this is the second line. 
    we live in Europe. 
    this is the fourth line."; 

    echo foo($paragraph); 
?> 
3

Вы могли бы использовать это.

<?php 
$str = strtolower('This is the first line. 
This is the second line. 
We live in Europe. 
This is the fourth line.'); 
$str = preg_replace_callback('~^\s*([a-z])~im', function($matches) { return strtoupper($matches[1]); }, $str); 
echo $str; 

Выход:

This is the first line. 
This is the second line. 
We live in europe. 
This is the fourth line. 

Модификатор i говорит, что мы не заботимся о том случае и m говорит каждая строка строки новая строка для ^. Это будет использовать первую букву строки, предполагая, что она начинается с a-z.

+0

'\ i' модификатор не требуется там, поскольку у вас уже есть нижний регистр ввода. Кроме того, нам нужно сопоставлять и заменять нижний обведенный шар только так, чтобы его вообще не требовалось. – Ulver

+1

Это отбрасывает любую начальную незапланированную капитализацию, хотя обычно это не подходит. Вы можете видеть, что правильное существительное Европа было одета ниже, как и местоимение I. –

+0

Можете ли вы рассказать о том, что иначе @ChrisBaker, или предоставить пример, не уверенный, что я следую. Ульвер Я заметил, что модификатор может использовать OP или нет. Нижний корпус, который я делаю, - это иллюстрация использования. – chris85

1

Заменить очень первый нижний накладной символ каждой строки заглавных букв:

$str = preg_replace_callback(
      '/^\s*([a-z])/m', 
      function($match) { 
       return strtoupper($match[1]); 
      }, 
      $str); 
4

Как насчет этого?

$a = "This is the first line.\n\r 
this is the second line.\n\r 
we live in Europe.\n\r 
this is the fourth line."; 

$a = implode("\n", array_map("ucfirst", explode("\n", $a))); 
Смежные вопросы