PHP删除两个字符串之间的所有非alphanum字符

时间:2015-06-16 11:40:33

标签: php preg-replace

我需要使用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

4 个答案:

答案 0 :(得分:4)

以下是您正在寻找的模式 -

[^name=\w\"]

这不包括' name =',字符和空格。查看行动here

您也可以使用返回值代替实际替换 -

$content = preg_replace('/[^name=\w\"]/', '$1', $content);

由于'$1'会在您需要时保留引号。

答案 1 :(得分:2)

使用preg_replace_callback

$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包含我们想要的结果