2017-01-25 1 views
1

PHP에서는 문자열을 변경 불가능한 것으로 간주하는 것이 일반적입니다. 때로는 "내부"문자열을 수정할 필요가 있습니다.regex - 문자 사이에 공백을 넣으십시오.

추가 배열 생성 방법을 사용합니다.

이 배열에는 소스 문자열의 모든 문자가 포함되어야합니다.

PHP (str_split)의 기능이 있습니다. 한 가지 문제는 멀티 바이트 인코딩을 충분히 처리하지 못한다는 것입니다.

또한 분리 기호 시퀀스의 입력 매개 변수로 정규식을 사용하는 mb_split 함수가 있습니다. 따라서

mb_split('.', '123') 

은 [ '', '', '', ']]를 반환합니다.

BUT :

mb_split('', '123') 

복귀 [ '123'].

그래서 멀티 바이트 문자 시퀀스의 변형 사이에 빈 공간을 일치하는 대응 정규식이 있다고 생각합니다. ~ 실제 경기입니다

그래서 '123'것이

'1~2', '2~3' 

일치해야합니다. 그것은 \ b와 같지만 무엇이든합니다.

그렇게 할 정규식 해킹이 있습니까?

+1

무엇이 필요합니까? XY 문제처럼 들립니다. – chris85

+0

저는 코딩 인터뷰를 준비하는 학생들 그룹에 가장 간단한 코드를 제시해야하는 작업을하고 있습니다. 문제는 적절한 문자열 반전입니다. PHP 언어를 사용하여 솔루션 프리젠 테이션이 필요합니다. 최상의 코딩 방법을 장려하기 위해 우리는 PHP 문자열을 불변으로 계산하기 위해 일반적으로 사용되는 방법을 사용하기로 결정했습니다. 따라서 우리는 문자열 기능 접근자를 언어 기능으로 사용할 권리가 없습니다. 우리는 대신에 그 문자열로부터 배열을 생성하고 그것을 작업하고, 요소를 교환 한 다음 결과 문자열에 결합하여 역순으로 처리합니다. 우리는 복잡한 솔루션을 사용할 수 없습니다. – vian

+0

적어도 거의 완벽한 솔루션 인 UTF-8 이상에서 작동하는 경우. – vian

답변

1

$arr[0] 모든 문자를 포함

preg_match_all('~\X~u', $s, $arr) 

사용. \X 패턴 matches any Unicode grapheme. /u 수정자는 정규 표현식 엔진이 입력 문자열을 유니 코드 문자열로 처리하고 패턴을 유니 코드로 인식하도록하기 위해 필요합니다.

PHP dem o를 참조하십시오.

관련 문제