PHP의 문자열에서 (와일드 카드)의 모든 인스턴스를 대문자로

톰 잭슨

문자열 내에서 사람 이름의 모든 인스턴스를 대문자로 표시하는 함수를 작성하려고합니다. 이름이 변경 될 수 있도록 동적이어야합니다. 예를 들면

"Hello Mr harrison and Mr jones"는 "Hello Mr Harrison and Mr Jones"가됩니다.

글자를 세는 것보다 효율적인 방법이 있습니까?

편집 : 명확히하기 위해 데이터베이스에서 4-5 개의 문장을 얻을 것입니다. 이것은 회사 엔지니어가 남긴 간단한 설명입니다. 아래 함수는 텍스트의 서식을 지정하므로 전체 대문자로 쓰든 대문자없이 쓰든 상관 없습니다. 그러나 Mr. (당시 사람의 이름)의 사례를 찾아서 수정해야합니다.

예-엔지니어가 "MR JONES FRIDGE를 수정했습니다. MR JONES WAS HAPPY WITH THE SERVICE"라는 의견을 남긴 경우-다음으로 변환됩니다.

"나는 Mr Jones 냉장고를 고쳤습니다. Mr Jones는 서비스에 만족했습니다."

편집 : 이것은 지금까지 텍스트 형식을 지정하는 내 기능입니다.

function formatTextCase($string) 
// Format a string to correct upper and lower case E.g. "HELLO. goodbye." "to Hello. Goodbye."
{
// Trime whitespace
$string = trim($string);

// First format to all lower, and capitalise first letter
$string = ucfirst(strtolower($string));     

// Capitalise any letter after full stop.
$string = preg_replace_callback('/[.!?:;].*?\w/', create_function('$matches', 'return strtoupper($matches[0]);'), $string);

// Test - please remove
//$string .= " Hello i am testing.";

// Replace any lower case I
$string = str_replace(" i ", " I ", $string);

// Now locate and capitalise any name after "Mr" eg. Mr jones to Mr Jones
What do I do here?

return $string;
}

감사!

Mickmackusa

여기 내가 당신을 위해 수고한 뜨거운 것이 있습니다.

코드 : ( PHP 데모 ) ( 패턴 데모 )

function uppers($m){
    $edge_cases=['De ','Di ','Du ','De La ','Van '];
    $correction=['de ','di ','du ','de la ','van '];  // reverse some fringe case names
    return str_replace($edge_cases,$correction,ucwords($m[0],"-' "));  // notice 2nd param of ucwords()
}

$sentences="i have fixed mr jones fridge.  mrs jones was happy with the service.  miss johnson-taylor told ms o'neil that everything was fabulous.  mr van larsen was less than impressed but that was a missunderstanding.  another person liked us on facebook!";
$sentences=preg_split('/[.!?]\K\s+/',$sentences); // generate array of sentences
$sentences=preg_replace_callback('/\bm(?:iss|r?s?)\b (?:de |di |du |de la |van )?[a-z]+[-\']?[a-z]*/','uppers',$sentences);  // match full names
$sentences=implode('  ',array_map('ucfirst',$sentences));  // capitalize start of sentences and rejoin sentences into a string
echo $sentences;

산출:

I have fixed Mr Jones fridge.  Mrs Jones was happy with the service.  Miss Johnson-Taylor told Ms O'Neil that everything was fabulous.  Mr van Larsen was less than impressed but that was a missunderstanding.  Another person liked us on facebook!

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

PHP에서 여러 개의 와일드 카드 인스턴스를 문자열 배열로 대체

분류에서Dev

대체에 와일드 카드를 사용하여 파일의 모든 문자열을 바꿉니다.

분류에서Dev

다른 두 문자열 사이의 모든 문자열 인스턴스를 로그 파일에 기록

분류에서Dev

여러 단일 문자의 모든 인스턴스를 문자열의 새 문자로 바꾸기

분류에서Dev

RTF 파일에서 특정 문자열의 모든 인스턴스를 굵게 표시

분류에서Dev

Notepad ++에서 문자열의 모든 인스턴스 편집

분류에서Dev

문자의 모든 인스턴스를 문자열의 끝으로 이동

분류에서Dev

문자열 내에서 문자열의 모든 인스턴스 찾기

분류에서Dev

JS에서 특정 문자의 모든 인스턴스를 대체합니까?

분류에서Dev

디렉토리의 모든 텍스트 파일에서 모든 문자를 대문자로 변환

분류에서Dev

파이썬 문자열에서 문자의 모든 인스턴스 바꾸기

분류에서Dev

입력 문자열에서 패턴의 모든 인덱스를 찾습니다.

분류에서Dev

일치하는 문자열의 모든 인스턴스를 배열에 기록-JavaScript

분류에서Dev

파이썬의 문자열에서 패턴의 모든 인스턴스 찾기

분류에서Dev

PHP는 문자열의 와일드 카드 (% s, % d)를 vars로 바꿉니다.

분류에서Dev

인덱스의 모든 문자 (StringBuilder에서)를 다른 문자열로 교체

분류에서Dev

Cygwin은 텍스트 파일에서 문자의 모든 인스턴스를 바꿉니다.

분류에서Dev

와일드 카드 문자를 사용하여 하나의 Docker 볼륨에서 다른 볼륨으로 모든 파일을 복사합니까?

분류에서Dev

문자열에서 단어의 모든 인스턴스를 찾아 텍스트 상자 (vb.net)에 표시

분류에서Dev

열의 모든 데이터를 대문자로 만드는 Liquibase 스크립트

분류에서Dev

문자열에서 마지막으로 나타나는 대문자 단어와 다른 단어 사이의 모든 문자를 일치시키는 RegEx

분류에서Dev

문자열의 와일드 카드

분류에서Dev

빈 문자열의 와일드 카드

분류에서Dev

C ++ : 문자열의 모든 문자 인스턴스를 다른 문자로 재귀 적으로 바꾸기

분류에서Dev

문자의 모든 인스턴스를 다른 문자열의 동일한 인덱스로 복사하는 함수가 있습니까?

분류에서Dev

R : 문자열 벡터를 전달하여 문자열 내의 모든 인스턴스를 대체합니다.

분류에서Dev

파일에있는 모든 새 줄의 첫 글자를 C에서 대문자로 만드는 방법

분류에서Dev

와일드 카드를 사용하여 문자열에서 몇 개의 문자 제거

분류에서Dev

문자열의 PHP 와일드 카드 문자

Related 관련 기사

  1. 1

    PHP에서 여러 개의 와일드 카드 인스턴스를 문자열 배열로 대체

  2. 2

    대체에 와일드 카드를 사용하여 파일의 모든 문자열을 바꿉니다.

  3. 3

    다른 두 문자열 사이의 모든 문자열 인스턴스를 로그 파일에 기록

  4. 4

    여러 단일 문자의 모든 인스턴스를 문자열의 새 문자로 바꾸기

  5. 5

    RTF 파일에서 특정 문자열의 모든 인스턴스를 굵게 표시

  6. 6

    Notepad ++에서 문자열의 모든 인스턴스 편집

  7. 7

    문자의 모든 인스턴스를 문자열의 끝으로 이동

  8. 8

    문자열 내에서 문자열의 모든 인스턴스 찾기

  9. 9

    JS에서 특정 문자의 모든 인스턴스를 대체합니까?

  10. 10

    디렉토리의 모든 텍스트 파일에서 모든 문자를 대문자로 변환

  11. 11

    파이썬 문자열에서 문자의 모든 인스턴스 바꾸기

  12. 12

    입력 문자열에서 패턴의 모든 인덱스를 찾습니다.

  13. 13

    일치하는 문자열의 모든 인스턴스를 배열에 기록-JavaScript

  14. 14

    파이썬의 문자열에서 패턴의 모든 인스턴스 찾기

  15. 15

    PHP는 문자열의 와일드 카드 (% s, % d)를 vars로 바꿉니다.

  16. 16

    인덱스의 모든 문자 (StringBuilder에서)를 다른 문자열로 교체

  17. 17

    Cygwin은 텍스트 파일에서 문자의 모든 인스턴스를 바꿉니다.

  18. 18

    와일드 카드 문자를 사용하여 하나의 Docker 볼륨에서 다른 볼륨으로 모든 파일을 복사합니까?

  19. 19

    문자열에서 단어의 모든 인스턴스를 찾아 텍스트 상자 (vb.net)에 표시

  20. 20

    열의 모든 데이터를 대문자로 만드는 Liquibase 스크립트

  21. 21

    문자열에서 마지막으로 나타나는 대문자 단어와 다른 단어 사이의 모든 문자를 일치시키는 RegEx

  22. 22

    문자열의 와일드 카드

  23. 23

    빈 문자열의 와일드 카드

  24. 24

    C ++ : 문자열의 모든 문자 인스턴스를 다른 문자로 재귀 적으로 바꾸기

  25. 25

    문자의 모든 인스턴스를 다른 문자열의 동일한 인덱스로 복사하는 함수가 있습니까?

  26. 26

    R : 문자열 벡터를 전달하여 문자열 내의 모든 인스턴스를 대체합니다.

  27. 27

    파일에있는 모든 새 줄의 첫 글자를 C에서 대문자로 만드는 방법

  28. 28

    와일드 카드를 사용하여 문자열에서 몇 개의 문자 제거

  29. 29

    문자열의 PHP 와일드 카드 문자

뜨겁다태그

보관