2012-09-25 52 views

回答

5

你可能寻找preg_replace

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

是的,这是almsot,但我需要限制它在2个字符 – simPod

+0

@simPod我改变了正则表达式让你做你想做的事情(1到2个字符) – h2ooooooo

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

这将取代任何两个字符由/与任何你想要的更换包围的所有实例。如果你知道内容只能是字母数字,那么你可以做\w\w而不是..

如果你需要它适用于任何长度,然后串别人推荐什么:“{} /.+/”会的工作。

注意,我使用{}而不是更常见的/分隔符,因为它们是有效的,因为你的匹配字符串包含/。这样我们就不需要逃避/的匹配实例,使它更容易阅读。

+0

你忘了分隔符:'{'和'}'不匹配,所以''{/../ {''或'} /../}'应该是模式 –

+1

它们不必完全匹配这种方式对于某些分隔符。 {和}完全有效。试试看:'<? echo preg_match(“{abc}”,“abcdefg”); ?>' – 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); 
相关问题