我有一个用户可以输入客户信息的系统。当信息被消除时,我做了一些事情来清理信息,例如更改案例,删除特殊字符等。我遇到的一个问题是有限公司具有以下语法,公司名称:
company name SL
由于我目前将所有内容更改为小写,然后使用ucwords
,我最终会使用Sl
。我正在寻找解决这个问题的最佳方法,并且正面考虑正则表达式。
不幸的是,正则表达式不是我的强项,并希望有人能指出我正确的方向。我希望做的是找到一个包含两个字母S
和L
的字符串。我需要能够找到字符串,无论字符如S.L.,S.L,也无论如何。如果找到该字符串,请将其替换为SL
。
在这个内部我还需要知道它发现使用字符串替换来改变它的字符。
如果你想象我使用字符串替换的当前方法正在变得非常大:
return str_replace(array(',','sl.','s.l.','s.l','sl ',' sl','SL.','Sl.','S.L.','S.l.','S.l','S.L','SL'),array("","SL","SL","SL","SL","SL","SL","SL","SL","SL","SL","SL","SL"),self::properCase($name))
上面的问题也是,如果有人说"比尔斯莱德sl",没有正则表达式只匹配那两个字母,我怎么能只说大写它们。我需要确保任何一方都没有。
非常感谢任何帮助或指示。
答案 0 :(得分:1)
使用此RegEx:
/\bs\.?l?\.?\b/i
<小时/>
将此RegEx与PHP一起使用:
$regex_pattern = "/\bs\.?l?\.?\b/i";
$string = "company name S.l\ncompany name Sl.\ncompany name S.l.\ncompany name Sl\ncompany name s.l.\ncompany name sl\ncompany name s.L";
$replacement = " SL";
$result = preg_replace($regex_pattern, $replacement, $string);
echo $result;
在http://writecodeonline.com/php/上试用此工作代码,以便快速查看结果。 :)
希望它有所帮助。
答案 1 :(得分:0)
您可以使用此正则表达式:\bs[.]?l(?:[.]?|\b)
并替换为SL
。
以下是example和sample working code on TutorialsPoint:
$re = "/\\bs[.]?l(?:[.]?|\\b)/i";
$str = "company name Sl\ncompany name s.l.\ncompany name sl\ncompany name s.L";
$subst = "SL";
$result = preg_replace($re, $subst, $str);
答案 2 :(得分:0)
$replacement= "SL";
$pattern = '/(\bs)(.?)(\s?)(l\b)(.?)/i';
$input = "
company name Sl
company name s.l.
company name sl
company name s.L
company name s. L
company name s l
company name S, L.
";
$result = preg_replace($pattern, $replacement, $input);
echo $result;
转到此http://www.phpliveregex.com/p/aJi链接,然后点击preg_replace