정규 표현식 배열을 사용하여 PHP에서 문자열을 찾아 바꾸려고 시도하지만 오류가 발생합니다. unknown modifier
. 이것이 대중적인 이슈 인 것으로 알고 있지만, 제 시나리오에서 그것을 고치는 방법을 이해하지 못합니다. 그러나PHP preg_replace "unknown modifier"
/\{youtube\(\(\?\!\}\)\.\)\*\}/
다음 반환
$pattern = '/' . preg_quote($pattern) . '/';
: 어떤 문자를 이스케이프 할에 대해 다음 코드를 실행
{youtube((?!}).)*}
: 여기
내 원래 정규식 패턴입니다 ,이 패턴을preg_replace
통해 실행할 때 다음 오류가 발생합니다 :
Warning: preg_replace() [function.preg-replace]: Unknown modifier 'y' ...
변경해야 할 사항과 여기에 표시 한 코드의 단계를 알려주세요. 여기
$content = "{youtube}omg{/youtube}";
$find = array();
$replace = array();
$find[] = '{youtube((?!}).)*}';
$replace[] = '[embed]http://www.youtube.com/watch?v=';
$find[] = '{/youtube((?!}).)*}';
$replace[] = '[/embed]';
foreach ($find as $key => $value) {
$find[$key] = '/' . preg_quote($value) . '/';
}
echo preg_replace($find, $replace, $content);
간단히에 정규식 구분 기호를 변경하려면 live example
아니, 어쨌든 왜'preg_quote'를 사용하고 있습니까? 리터럴 문자열 부분을 의미하지만 이미 정규식 패턴을가집니다. – mario
마리오, 나는 그들이 그런 식으로 원인을 격리하려했다고 생각합니다. 그것 * 여전히 * 이상한 오류를 던지는 사실 자체가 흥미 롭습니다. – Joey
@mario 이전 문제를 해결하기 위해'preg_quote'를 사용하고 있습니다 ...하지만 그것 없이도 같은 오류가납니다. –