使用 PHP...
我有一个数组(虽然是多维的,但我只关心此情况下的顶层),其中键是字符串,具有各种形式。示例键包括:
- Fred Smith
- Dr John Paul
- Dr. Mary Ellen
- Bill Driver
我需要一个函数来从任何发现它们的键的开头仅删除 'Dr'、'Dr '、'Dr'、'Dr. '。我目前正在使用以下代码:
function fixArrayKey(&$arr) {
$arr = array_combine(
array_map(
function ($str) {
return str_replace(array('Dr. ', 'Dr.', 'Dr ', 'Dr'), '', $str);
},
array_keys($arr)
),
array_values($arr)
);
我在这里找到了一个答案How to remove spaces in array keys names in php?
它几乎帮助我完成了任务,但是它将会匹配字符串中的任何位置,所以最终我得到了以下结果:
- Fred Smith
- John Paul
- Mary Ellen
- Bill iver
我感觉需要使用 preg_replace(),类似于这个例子Remove a string from the beginning of a string,我认为我可以在 preg_replace() 中设置限制,但我不确定。我也看过 ltrim(),但它并不完全正确。我的问题是可能找不到匹配项,或者匹配项可能长达2、3或4个字符,并且在字符串中间可能存在我不想删除的匹配项。
我是否正在正确地查找 preg_replace()?
preg_replace('~^Dr\.?\s*~', '', $str)
。 - Wiktor Stribiżewpreg_replace('~^Dr\b\.?\s*~', '', $str)
应该更好。 - Wiktor Stribiżew