PHP의 preg_
함수에 대한 정규 표현식 인수를 이중 구분 기호로 사용해야한다는 사실을 알고 있습니까? 예를 들어
preg_match_all(`'/foo/'`, $target, $results)
'...'
가
문자열 분리는,
/.../
는 정규식 분리가 있으며, 실제 정규식
foo
이다. 정규식 구분 기호는 슬래시가 아니어도 일치해야합니다. 일부 인기있는 선택은
#...#
,
%...%
및
~...~
입니다. 대괄호 문자 쌍 (예 :
{...}
,
(...)
,
[...]
및
<...>
)도 사용할 수 있습니다. 그것들은 훨씬 덜 인기가 있으며 좋은 이유가 있습니다.
정규식 구분 기호를 생략하면 정규식 컴파일 단계가 실패하고 오류 메시지가 아마 적합하지 않습니다. 예를 들어,이 코드 :
preg_match_all('<td style="white-space:nowrap;">###.##</td>', $s, $m)
...이 메시지를 생성하는 것입니다 :
Unknown modifier '#'
그것은 정규식 구분 기호로 꺾쇠 괄호의 첫 번째 쌍을 사용하려고하고, 어떤이로 >
다음을 regex 수식어 (예 : 대/소문자를 구분하지 않으려면 i
, 여러 줄에는 m
). 이 문제를 해결하려면, 당신과 같이, 실제 정규식 구분 기호를 추가합니다 :
preg_match_all('%<td style="white-space:nowrap;">###\.##</td>%i', $s, $m)
구분자의 선택은 개인적인 취향과 편의의 문제이다. #
또는 /
을 사용했다면 실제 정규 표현식에서 그 문자를 이스케이프 처리해야합니다. 나는 그것이 정규식 메타 문자이기 때문에 .
을 탈출했다.마지막으로, i
수정자를 추가하여 수정 자 사용을 보여 주며 HTML 은 대소 문자를 구분하지 않으므로입니다.
@ user268851 코드를 4 줄만 들여 쓰기하면 올바르게 렌더링됩니다. 귀하의 이미지에 대한 링크를 제거하고 귀하의 질문에 HTML을 다시 추가했습니다. –
잘 사용하는 정규식은 무엇입니까? – prodigitalson
정규 표현식으로 HTML을 구문 분석하지 않는 것이 좋습니다. '\ Q