2012-09-25 6 views
1

일치와/사이에 2 개 문자를 교체/나는 /re/ 또는 /en/와일드 카드

내가 원하는 이러한 문자열이 같은 2 개 /의 뭔가를 포함하여 내부의 모든 것을 대체 /과 /해야 :

str_replace("/??/", $replacement, $string); 
+0

"그 2 /"되지 않습니다? 그게 뭐야? – xdazz

+0

나는'/'과'/'를 끝내는 것을 의미했다. – simPod

답변

5

아마도 preg_replace을 검색했을 것입니다.

preg_replace("#/.{1,2}/#", $replacement, $string) 
+0

참으로 그럴듯하지만, 2 문자로 제한해야한다. – simPod

+0

@simPod 내가 원하는대로 할 정규 표현식을 바꾼다. (1에서 2 문자) – h2ooooooo

2
preg_replace("{/../}", $replacement, $string); 

이 원하는 대체 무엇이든 함께 /에 둘러싸여 두 문자의 모든 인스턴스를 대체합니다. 내용이 영숫자 일 경우에만 .. 대신 \w\w을 입력 할 수 있습니다.

길이가 다른 문자열에 적용해야하는 경우 다른 사람들이 권장하는 내용 : "{/.+/}"이 작동합니다.

주, 나는 { 대신 그들이 유효하기 때문에 일반적인 / 구분 기호의 }하고 일치하는 문자열이 /가 포함되어 있기 때문에 사용하고 있습니다. 그렇게하면 일치하는 / 인스턴스를 벗어날 필요가 없으므로 읽는 것이 더 쉬워집니다.

+0

구분 기호 '{'와'}'가 일치하지 않으므로' '{/../ {''또는'} /../} '가 패턴이어야합니다. –

+1

정확히 일치 할 필요는 없습니다 특정 구분 기호에 대해 그렇게합니다. {및}는 완전히 유효합니다. 그것을보십시오 :'' – chops

+0

올바른 구분 기호로'['와']'와'('와')를 사용할 수 있습니다. 그것들의 모든 유효한 인스턴스를 벗어나야 만합니다. 구분 기호가 대칭이면 대칭 적으로 사용할 수 있습니다. – chops

0
preg_replace('~/[a-z]{2}/~', $replacement, $string); 
1

이 시도 :

$in = 'foo/ba/r and /so/me'; 
$out = preg_replace('/\/[^\/]{2}\//','/REPLACEMENT/',$in); 
echo $out;//'foo/REPLACEMENT/r and /REPLACEMENT/me' 

기본적으로 정규 표현식은 슬래시 그 포워드로 구분됩니다 -String 어떤 (하위)과 일치하고, 슬래시를 제외하고 두 (만 두) 문자가 포함되어 있습니다. 그래서 /s//는 일치하지만, /ss/ 것이다

1
$str = '/rr/'; 
$replacement = 'a'; 
echo preg_replace("#/\w{2}/#", $replacement, $str);