등의 문자지도를 검색 할 수 PHP에서 방법이 있나요 나는소문자 및 대문자를 검색 하시겠습니까?
Firstname LastnameFirstname Lastname
같은이 문자열을하고 난
Firstname Lastname, Firstname Lastname
에 그것을 변환 할?
등의 문자지도를 검색 할 수 PHP에서 방법이 있나요 나는소문자 및 대문자를 검색 하시겠습니까?
Firstname LastnameFirstname Lastname
같은이 문자열을하고 난
Firstname Lastname, Firstname Lastname
에 그것을 변환 할?
간단한/naiive 방법 :
$string = preg_replace('/([a-z])([A-Z])/', "$1, $2", $string);
하지만 위 내 댓글에 넣어, 그 Rachel Mc, Adams
에 Rachel McAdams
을 설정합니다.
대문자 또는 소문자를 감지하는 것은 그렇게 어렵지 않습니다. PHP는 내장 기능이 없습니다하지만 당신은 할 수 있습니다 그리고
$ord = ord($string[$pos]);
$is_uppercase = $ord <= 90 && $ord >= 65;
당신이 할 수있는 문자를 통해 루프와 당신이 가능하게 정말로 '짧은'쌍을 건너 뛰는 발견,하지만 그건 추측 일이 될 것하는 쌍 참조 . 인간 이름에는 형식이 없으므로이 작업을 수행 할 수있는 완벽한 방법은 없습니다.
<?php
$str = 'Firstname LastnameFirstname Lastname'; // Set our string
$str = preg_replace('/(\w+ \w+[a-z])([A-Z]\w+ \w+)/', '$1, $2', $str); // Find name boundries and insert comman
echo $str; // Firstname Lastname, Firstname Lastname
?>
'preg_replace_all'로 변환하면 작동하지 않습니다. 문자열에 두 개 이상의 이름이 있으면 다른 모든 이름과 만 일치합니다. – Paulpro
필자는 예를 들어 두 개의 이름 만 구문 분석하는 예제를 기반으로 b/c를 고려하지 않았지만 매우 좋은 지적입니다. –
약간 복잡하지만 일이 먼저 교체 다른 단어와 결합 대문자로 문자열을 대문자로 문자열을 두 번째 검색을
$word = "Firstname LastnameFirstname Lastname";
$word = str_replace('_', ' ', str_replace('_xx', ', ', strtolower(preg_replace('/[^A-Z^a-z^0-9]+/','_',
preg_replace('/([a-z\d])([A-Z])/','\1_xx\2',
preg_replace('/([A-Z]+)([A-Z][a-z])/','\1_\2',$word))))));
echo $word;
첫 preg_replace이다 검색을 수행하는 쉼표로 우리 _xx을 대체하는 데 도움이 더하기 공간 두 번째는 밑줄을 공백으로 대체합니다.
'Rachel McAdams'는 'Rachel Mc, Adams'가되어야하나요? –
누군가 McDonald와 같은 성을 가진다면 어떨까요? –
정확히 무엇을하려고합니까? 더 많은/좋은 예를 들어주세요. – Crack