PHP 删除两个字符串之间的所有非字母数字字符
PHP to remove all non-alphanum characters between two strings
我需要使用 PHP 从两个字符串之间删除非字母数字字符。
输入:
name="K9 Mk. II"
built=2015.06.15
name="Queen Eliz. 3rd (HRH)"
预期输出:
name="K9MkII"
built=2015.06.15
name="QueenEliz3rdHRH"
我的代码:
$contents = file_get_contents("input.txt");
$contents = preg_replace('/name=\"[^A-Za-z0-9]\"/', "name=\"\1\"", $contents);
编辑:它应该只删除 name=" 和 " 之间不需要的字符。包含 built=2015.06.15 的行应保持不变。
一如既往,非常感谢您的帮助。
WtS
这是您正在寻找的模式 -
[^name=\w\"]
这不包括 'name='、单词字符和空格。查看实际效果 here
您也可以使用 return 值而不是实际替换 -
$content = preg_replace('/[^name=\w\"]/', '', $content);
因为 ''
会在您需要时保留引号。
您可以使用 PHP 的 preg_replace_callback() 通过以下方式首先匹配名称:/name="([a-z0-9]+)"/i
然后调用函数删除每个匹配项中的空格。
$output = preg_replace('/[^\da-z]/i', '', $InputString);
这里我的意思是不区分大小写。
$InputString 是您提供的输入。
$output 包含我们想要的结果
$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"
我需要使用 PHP 从两个字符串之间删除非字母数字字符。
输入:
name="K9 Mk. II"
built=2015.06.15
name="Queen Eliz. 3rd (HRH)"
预期输出:
name="K9MkII"
built=2015.06.15
name="QueenEliz3rdHRH"
我的代码:
$contents = file_get_contents("input.txt");
$contents = preg_replace('/name=\"[^A-Za-z0-9]\"/', "name=\"\1\"", $contents);
编辑:它应该只删除 name=" 和 " 之间不需要的字符。包含 built=2015.06.15 的行应保持不变。
一如既往,非常感谢您的帮助。
WtS
这是您正在寻找的模式 -
[^name=\w\"]
这不包括 'name='、单词字符和空格。查看实际效果 here
您也可以使用 return 值而不是实际替换 -
$content = preg_replace('/[^name=\w\"]/', '', $content);
因为 ''
会在您需要时保留引号。
您可以使用 PHP 的 preg_replace_callback() 通过以下方式首先匹配名称:/name="([a-z0-9]+)"/i
然后调用函数删除每个匹配项中的空格。
$output = preg_replace('/[^\da-z]/i', '', $InputString);
这里我的意思是不区分大小写。
$InputString 是您提供的输入。
$output 包含我们想要的结果
$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"