HTML 엔터티의 일부가 아닌 preg_replace
모든 ;
항목이 아직없는 경우 앞에 공백을 추가하고 (아직없는 경우) 뒤에 공백을 추가 하고 싶습니다 .
예 : : 여기에 선택 ;
표시 <
, 전에 공간을 추가 ;
로 표시 >
한 후 공간을 추가하고, ;
표시 =
공간 주위를 추가 할 수 있습니다. (표시 x
는 무시해야합니다.)
Hello; Hello ;Hello ; Hello;Hello èHello è Hello è;Helloè Hello -Hello -; Hello- Hello
< > x = x x x= x x x< x
그래서 그것은되었다
Hello ; Hello ; Hello ; Hello ; Hello èHello è Hello è ; Helloè Hello -Hello - ; Hello- Hello
이것을 사용하여 이것을 달성하려고 시도했습니다 (주석 참조) : HTML 엔티티의 일부 이지만 동일한 방식으로 작동하지 않는 경우 세미콜론 뒤에 공백을 삽입하십시오 .
테스트 : https://regex101.com/r/xV4zA2/1
감사!
[특정한 경우를 고려하여 약간 변경됨]
해결되지 않은 미스터리 한 경우가 아니라면 다음과 같이해야한다고 생각합니다 .
preg_replace("/(\G|\b(?<!&|&#)\w+|[\W_]) ?; ?/", "$1 ; ", $input_lines);
그것은 변형
Hello; Hello ;Hello ; Hello;Hello èHello è Hello è;Helloè Hello -Hello -; Hello- Hello
으로
Hello ; Hello ; Hello ; Hello ; Hello èHello è Hello è ; Helloè Hello -Hello - ; Hello- Hello
... 이제 특정 엣지 케이스도 처리합니다 ...
세분화하면 정규식은 다음과 같습니다.
( # begin capture group #1 and match:
\G # [assert at beginning of match]
| # OR match:
\b # [assert a word boundary]
(?<! # look behind (the word boundary) and assert that there is not:
&|&# # an ampersand or an ampersand and a pound sign
) # end look-behind assertion
\w+ # one or more of any word character ([0-9a-zA-Z_])
| # OR match:
[\W_] # a non-word character or underscore
) # end capture group #1
? # optional single space
; # semicolon
? # optional single space character
그런 다음 캡처 그룹 # 1 ( $1
), 단일 공백, 세미콜론 및 단일 공백으로 대체됩니다 .
$1 ;
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다