web-dev-qa-db-fra.com

Comment remplacer nbsp; avec un espace?

Je crée du code pour générer automatiquement une méta-desc pour les pages de produits dans VM.

J'ai enlevé les tags, mais je vois toujours &nbsp dans le texte résultant.

Le code que j'ai actuellement est:

if ($product->metadesc) {
    $document->setDescription($product->metadesc);
} else {
    $document->setDescription(strip_tags("Buy ".$category->category_name." | ".$product->product_name." | ".$product->product_desc));
}

Ainsi, par exemple, cela produit:

Buy T-Shirts | PTB Keep Calm | PTB Keep Calm This creative design is printed  on a Premium Fitted CVC Crew Tee  Features:60% combed rin...

Y a-t-il quelque chose que je puisse faire pour supprimer ces entités spatiales insécables?

2
Dtorr1981

html_entity_decode () , comme suggéré par Lodder, est un appel de fonction approprié. Si vous souhaitez "nettoyer" des espaces consécutifs, un simple et large appel de regex fera l'affaire.

* J'ai ajouté le modificateur de modèle Unicode pour une couverture de remplacement maximale.

démo :

$category = new stdClass();
$category->category_name = 'T-Shirts';
$product = new stdClass();
$product->product_name = 'PTB Keep Calm';
$product->product_desc = 'PTB Keep Calm This creative design is printed  on a Premium Fitted CVC Crew Tee  Features:60% combed rin...';

$decoded = strip_tags(html_entity_decode("Buy " . $category->category_name." | ".$product->product_name." | ".$product->product_desc));
echo $decoded;

echo "\n---\n";

echo preg_replace('~\s+~u', ' ', $decoded);

Sortie:

Buy T-Shirts | PTB Keep Calm | PTB Keep Calm This creative design is printed  on a Premium Fitted CVC Crew Tee  Features:60% combed rin...
---
Buy T-Shirts | PTB Keep Calm | PTB Keep Calm This creative design is printed on a Premium Fitted CVC Crew Tee Features:60% combed rin...

Bien sûr, si vous n'avez aucune autre entité à décoder et que vous souhaitez condenser les espaces, vous pouvez simplement utiliser regex.

echo preg_replace('~(?:\s| )+~u', ' ', strip_tags("Buy " . $category->category_name." | ".$product->product_name." | ".$product->product_desc));
2
mickmackusa