我需要使用PHP从两个字符串之间删除非字母数字字符。
输入:
name =" K9 Mk。 II"
建= 2015年6月15日
name =" Queen Eliz。第3(HRH)"
预期产出:
名=" K9MkII"
建= 2015年6月15日
名=" QueenEliz3rdHRH"
我的代码:
let time: String = record["time"] as! String
let record1: String = record["record"] as! String
let recordId: String = record["record_id"] as! String
let saveTime: String = record["save_time"] as! String
let setId: String = record["set_id"] as! String
修改:它只应从 name =" 和" 之间删除不需要的字符。包含 built = 2015.06.15 的行应保持不变。
与往常一样,非常感谢您的帮助。
WTS
答案 0 :(得分:4)
以下是您正在寻找的模式 -
[^name=\w\"]
这不包括' name =',字符和空格。查看行动here
您也可以使用返回值代替实际替换 -
$content = preg_replace('/[^name=\w\"]/', '$1', $content);
由于'$1'
会在您需要时保留引号。
答案 1 :(得分:2)
$arr = array('name="K9 Mk. II"','name="Queen Eliz. 3rd (HRH)"');
foreach($arr as $str) {
$str = preg_replace_callback('/(?<=name=")([^"]+)(?=")/',
function ($m) {
return preg_replace("/\W+/", "", $m[1]);
},
$str);
echo $str,"\n";
}
<强>输出:强>
name="K9MkII"
name="QueenEliz3rdHRH"
答案 2 :(得分:0)
您可以使用PHP preg_replace_callback()首先匹配名称,方法是使用:/name="([a-z0-9]+)"/i
然后调用一个函数来删除每个匹配中的空格。
答案 3 :(得分:0)
$ output = preg_replace('/ [^ \ da-z] / i','',$ InputString);
这里我的意思是不区分大小写。
$ InputString是您提供的输入。
$ output包含我们想要的结果