2011-08-01 4 views
0

여기에 제가하려고하는 것이 있습니다. 페이지에 제목이 있습니다. 나는 각 문자열의 첫 번째 단어의 마지막 글자를 대문자또 다른 대문자 사용 질문

예를하려고 해요 : 안녕하세요을

안녕하세요을 얼마나

나는 한 단어하지만 작업을 얻을 수

하나 이상의 단어가있는 경우 어떻게하는지 알아낼 수 없습니다. 어떤 도움이 좋을지 !!

감사합니다.

+0

왜 이런, 그것은 정상적인 문법입니다. –

+0

현재 가지고있는 코드를 보여주십시오. – Matt

답변

1

노력이

<?php 

    $title     = "Hello World"; 
    list($firstword, $rest) = explode(" ", $title, 2); 
    $firstword    = strrev(ucfirst(strrev($firstword))); 
    $title     = $firstword . " " . $rest; 

    print $title; 

당신은 당신이 한 단어로 어떻게 작동하는지 방법을 알고 있기 때문에, 당신은 단지 필요 explode, strrev, list, ucfirst

+0

와우 너희들은 빠르다! 고맙습니다!! – Kathy

+0

당신은 환영합니다 :) –

+0

그들은 빨리 명성을 얻습니다, 캐시. –

1

더보기 어떤 기능에 대한 읽으려면 첫 단어를 구한 다음 알고리즘을 입력하십시오.

  1. 콜백 메서드 내에서 마지막 문자를 교체 "/^(\w+)/"
  2. preg_replace_callback을보십시오.

preg_replace_callback : http://php.net/manual/en/function.preg-replace-callback.php

UPDATE - 작업 코드 :

$string = "This is a test"; 
$string = preg_replace_callback(
     '/^(\w+)/', 
     create_function(
      '$matches', 
      'return yourUCLastAlgorithm($matches[0]);' 
     ), 
     $string 
    ); 
echo $string; 

UPDATE2 - 전자 수정 자와 preg_replace이다를 사용하여 :

$string = "This is a test"; 
$string = preg_replace(
     '/^(\w+)/e', 
     'yourUCLastAlgorithm("$1")', 
     $string 
    ); 
echo $string; 
+0

lamda 함수를 사용하는 정규 표현식이 일반 함수를 사용하여 수행 할 수있을 때 약간 과잉이라고 생각하지 않습니까? –

+0

또 다른 생각 : e 수정 자와 함께 preg_replace 사용. –

+0

일반적으로 나는 항상 사용자 지정 분할 솔루션에 대해 regexps를 사용하려고합니다. –

-1

을이 시도 :

$string = preg_replace('/^([ ]+)?([^ ]*)([a-z])?(.*)?$/i', "$1.$2.strtoupper($3).$4", $string); 
,536,
+0

필요하지 않은 경우 정규 표현식을 사용해야하는 이유는 무엇입니까? 그것도 너무 비싸 –

+0

이것이 처음 생각 이었기 때문에 ^^ ' –

+0

'이것은 테스트'=>'.This.strtoupper()입니다. 테스트입니다'게시하기 전에 확인하십시오. –