preg_replace를 사용하여 다른 문자열로 텍스트 문자열을 교체
-
06-07-2019 - |
문제
나는 줄이있다 행동 - [n] ew, [u] pdate 또는 [d] elete : n preg_replace를 사용하여 "action- [n] ew, [u] pdate 또는 [d] elete : u"somhow로 대체해야합니다. 그것은 동일하게 유지됩니다.
내 코드는 다음과 같습니다
$action = Action - '[N]ew, [U]pdate, or [D]elete : U';
$line = preg_replace("/(Action - [N]ew, [U]pdate, or [D]elete : N)/",$action,$line);
해결책
[
그리고 ]
정규 표현의 특수 인물입니다. 일치하려면 탈출해야합니다.
"/(Action - \[N\]ew, \[U\]pdate, or \[D\]elete : N)/"
탈출하지 않고 내면의 표현 [
그리고 ]
그들 안의 모든 캐릭터 중 하나와 일치합니다. 그래서 원래의 경우, "[N]ew"
일치하고 있었다 "New"
. 그렇다면 "[NP]ew"
, 그것은 일치했을 것입니다 "New"
또는 "Pew"
.
다른 팁
당신은 필요하지 않습니다 preg_replace
하기 위해서. 간단한 str_replace
충분할 것입니다 :
$action = 'Action - [N]ew, [U]pdate, or [D]elete : U';
$line = str_replace('Action - [N]ew, [U]pdate, or [D]elete : N', $action, $line);
몇 가지 문제 :
1) 첫 번째 줄의 구문 오류. 당신의 인용문은 잘못 배치됩니다. 그것은해야한다:
$action = "Action - [N]ew, [U]pdate, or [D]elete : N";
2) 정사각형 괄호를 피해야합니다 ([
그리고 ]
) 정기적 인 표현. 또는 할 수 있습니다.
$line = preg_replace("/N$/", "U", $action);
그래서 그들을 결합 :
$action = "Action - [N]ew, [U]pdate, or [D]elete : N";
$line = preg_replace("/N$/", "U", $action);
'['및 ']를 피하십시오.
제휴하지 않습니다 StackOverflow