PHP 버전
4+
preg_quote(string $str, ?string $delimiter = null): string
/* preg_quote() 함수는
   PHP 버전별 작성 구문에 차이가 있습니다! */

$str = '즐겁게 #PHP#를 배워요~'; // '#'은 정규 표현식 패턴의 시작과 끝을 나타내는 구분자(Delimiter)로 사용됨

// PHP 7.3.0부터는 '#'이 기본 이스케이프 대상에 포함됩니다.
$escaped_str = preg_quote($str); 

// PHP 7.3.0 이전 버전은 구분자를 직접 지정해야 함: $escaped_str = preg_quote($str, '#');

echo $escaped_str; // '#' 문자 앞에 백슬래시(\)가 추가됩니다.
// 출력: 즐겁게 \#PHP\#를 배워요~
/* 사용자가 입력한 검색어 (예를 들어 정규 표현식 특수문자 '+'가 포함될 수도 있다고 가정) */
$search = 'C++'; 

/* 검색 대상 텍스트 예 */
$text = '요즘은 C++ 언어도 많이 사용합니다.';

/* 입력값의 특수문자 앞에 백슬래시(\)를 붙여 안전하게 이스케이프 처리 */
$safe_search = preg_quote($search, '/'); // 'C\+\+'로 처리

/* preg_match()를 사용해 검색어가 존재하는지를 체크하기 위해 정규 표현식 패턴으로 만듦
 * preg_match($pattern, $subject) 함수는
 * 주어진 정규 표현식 패턴($pattern)을 사용하여 문자열($subject) 내에서 일치하면 true를 반환함
*/
$pattern = '/' . $safe_search . '/i'; // 양쪽 '/'는 정규식 시작/끝 구분자,
                                      // 뒤의 'i'는 $safe_search를 대소문자로 구분하지 않는 옵션

/* 안전하게 정규 표현식 검색 수행 */
if (preg_match($pattern, $text)) {
    echo '검색하신 단어가 본문에 존재합니다!';
}
// 출력: 검색하신 단어가 본문에 존재합니다!
/* 사용자가 입력한 검색어 (정규 표현식에서 끝 지점을 의미하는 특수문자 '$'가 포함됨) */
$search = '$100'; 

/* 검색 대상 본문 텍스트 예 */
$text = '이번 주 특별 할인 품목은 $100 상품입니다.';

/* 입력값의 특수문자 앞에 백슬래시(\)를 붙여 안전하게 이스케이프 처리 */
$safe_search = preg_quote($search, '/'); // '\$100'으로 처리

/* preg_replace()를 사용해 검색어를 <mark> 태그로 교체하기 위한 정규 표현식 패턴 생성 */
$pattern = '/' . $safe_search . '/i'; // '/\$100/i' 형태로 패턴이 완성됨

/* 본문 내에서 일치하는 단어를 <mark> 태그로 교체 */
$highlighted = preg_replace($pattern, '<mark>$0</mark>', $text);

echo $highlighted;
// 출력: 이번 주 특별 할인 품목은 <mark>$100</mark> 상품입니다.