Tengo un problema con mi siguiente fragmento, funciona más o menos... lo que debo hacer es reemplazar los espacios con - y también quiero reemplazar / con - pero está agregando el doble para / ya que está solicitando espacios a ambos lados de y no estoy seguro de cómo resolverlo.
PHP
$optimise_product_name_pre = "Simplified PHP Invoice / Billing System"; $optimise_product_name = str_replace(array(" ","/"), array("-",""), $optimise_product_name_pre); return $optimise_product_name;PRODUCCIÓN:
simplificado-php-factura--sistema-de-facturación
ESPERADO:
simplificado-php-factura-sistema-de-facturación
A veces, el reemplazo de cadenas no se puede realizar con precisión usando un str_replace() , por lo que todo lo que tiene que hacer es dividir el proceso en 2 llamadas separadas a str_replace()
$optimise_product_name_pre = "Simplified PHP Invoice / Billing System"; $optimise_product_name = str_replace(" / ", "-", $optimise_product_name_pre); $optimise_product_name = str_replace(" ", "-", $optimise_product_name); echo $optimise_product_name;Resultado
Simplified-PHP-Invoice-Billing-SystemSi realmente desea que la cadena resultante esté en minúsculas, agregue un strtolower() como este
$optimise_product_name_pre = "Simplified PHP Invoice / Billing System"; $optimise_product_name = str_replace(" / ", "-", $optimise_product_name_pre); $optimise_product_name = str_replace(" ", "-", $optimise_product_name); echo strtolower($optimise_product_name);Resultado
simplified-php-invoice-billing-systemPor supuesto, reemplace mi
echocon elreturnque estaba usando si esto realmente está en una función.
En un examen más detenido, esto también funciona
$optimise_product_name_pre = "Simplified PHP Invoice / Billing System"; $optimise_product_name = str_replace(array(" /"," "), array("","-"), $optimise_product_name_pre); echo strtolower($optimise_product_name);