Mua*_*idi 5 php replace sanitization blacklist
我有一系列列入黑名单的术语:
$arrayBlacklist = array("Kota","Kab.","Kota Administrasi","KAB", "KOTA", "Kabupaten");
Run Code Online (Sandbox Code Playgroud)
我有一个字符串要消毒:
$city = "Kota Jakarta Selatan";
// also: "Kab. Jakarta Selatan", "Kota Administrasi Jakarta Selatan", ...
Run Code Online (Sandbox Code Playgroud)
$arrayBlacklist如果它在$city变量中,我只想删除该值。
所以,我得到 $city = "Jakarta Selatan"
usort.preg_replace每个字符串都以不区分大小写的方式。str_replace。片段:
<?php
$arrayBlacklist = array("Kota","Kab.","Kota Administrasi","KAB", "KOTA", "Kabupaten","Jakarta");
usort($arrayBlacklist,function($a,$b){
return strlen($b) <=> strlen($a);
});
$city = "Kota Jakarta Selatan kota Administrasi ki";
$city = " ". $city. " "; // add spaces to ease the matching
foreach($arrayBlacklist as $val){
$city = preg_replace('/\s'.$val.'\s/i',' ',$city); // replace with double spaces to avoid recursive matching
}
$city = str_replace(" "," ",trim($city));
echo $city;
Run Code Online (Sandbox Code Playgroud)
更新:
将preg_replace字符串匹配为左侧和右侧均被空格覆盖的字符串,因为有时在黑名单字符串中也有非单词字符。为了简化匹配,我们特意在循环开始之前添加前导和尾随空格。
注意:我们将匹配的字符串替换为preg_replace双空格,以避免与其他字符串递归匹配。