【发布时间】:2011-10-17 13:49:39
【问题描述】:
我想查找任何模式匹配:###-##-####
并将###-##, 替换为***-**
但留下-####
我在下面尝试了这个,但根本没有替换任何东西。
preg_replace('/(^[\d]{3})(-)([\d]{2})(-[\d]{4}$)/','\2\4',$myText);
感谢任何帮助
更新,在尝试了以下一些建议之后,这是我目前的整个代码字符串。我正在将第二个回显输出与第一个进行比较......并且社交号码都保持不变。
另外,正如下面提到的,我的字符串确实包含的不仅仅是一个社交......它有数千个字符长。我认为这是我真正的问题。对不起,如果我一开始没有把它弄清楚。
//Make the CSC credit report request.
$strCscResponse = $Csc->makeRequest($strFixedFormatRecord);
echo "<br/><br/><pre>" . $strCscResponse . "</pre><br/><br/>";
$strCscResponse = str_replace("!", " ", $strCscResponse);
$strCscResponse = preg_replace('/^\d{3}-\d{2}(-\d{4})$/','***-**$1',$strCscResponse);
echo "<br/><br/><pre>" . $strCscResponse . "</pre><br/><br/>";
更新
我想标记所有答案和“答案”只是因为我没有澄清字符串不仅仅是一个社交。感谢您对这个问题的帮助,令人尴尬的是,这已经让我疯狂了几天。
【问题讨论】:
-
您说“任何模式匹配...”是指在一长串文本中吗?如果是这样,那么行锚的开头和结尾将取消任何匹配。此外,您没有用星号替换任何内容,这似乎是您的问题所暗示的(例如:将
123-45-6789替换为***-**-6789)
标签: php regex replace mask social