Tengo una matriz

 $arrayBlacklist = array("Kota","Kab.","Kota Administrasi","KAB", "KOTA", "Kabupaten");

Y tengo $ city variable

  $city = "Kota Jakarta Selatan"; // ect. "Kab. Jakarta Selatan", "Kota Administrasi Jakarta Selatan",...

Solo quiero eliminar el valor $arrayBlacklist si está en la variable $ city

Entonces, obtengo $city = "Jakarta Selatan"

5
Muamar Humaidi 21 jul. 2020 a las 15:08

2 respuestas

Menos elegante que otra respuesta, pero hace el trabajo.

$arrayBlacklist = ['Kota', 'Kab.', 'Kota Administrasi', 'KAB', 'KOTA', 'Kabupaten'];
$city = 'Kota Jakarta Selatan'; 

// make an array of words from the city name
$cityAsArray = explode(' ', $city);

foreach ($cityAsArray as $key => $part) {
    // check if word is in blacklist
    if (in_array($part, $arrayBlacklist)) {
        // remove from the array if it is blacklisted
        unset($cityAsArray[$key]);
    }
}

// convert the city name back to string
$city = implode(' ', $cityAsArray);

ACTUALIZACIÓN: podemos ordenar la matriz de la lista negra según el número de palabras, luego la cadena reemplazando cada cadena de la lista negra.

$arrayBlacklist = ["Kota", "Kab.", "Kota Administrasi", "KAB", "KOTA", "Kabupaten"];
$city = 'Kota Administrasi Jakarta Selatan';
usort($arrayBlacklist, function ($a, $b) {
    return substr_count($a, ' ') < substr_count($b, ' ');
});

foreach ($arrayBlacklist as $blacklist) {
    $city = trim(str_replace($blacklist, '', $city));
}
0
Mehrdad Dastgir 21 jul. 2020 a las 12:43
$arrayBlacklist = array("Kota Administrasi", "Kota","Kab.","KAB", "KOTA", "Kabupaten");
rsort($arrayBlacklist);
$city = "Kota Jakarta Selatan";
        
$city = trim(preg_replace('/\s+/', ' ',str_replace($arrayBlacklist, '', $city)));

Puedes usar https://www.php.net/manual/en/function. str-replace.php

str_replace puede usar matrices como declaraciones de búsqueda y reemplazo.

3
V-K 21 jul. 2020 a las 12:45