it-swarm.com.de

Wie nbsp ersetzen; mit einem Leerzeichen?

Ich erstelle einen Code, um automatisch ein Meta-Desc für Produktseiten in VM zu generieren.

Ich habe Tags entfernt, aber ich sehe immer noch &nbsp im resultierenden Text.

Der Code, den ich derzeit habe, ist:

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

So entsteht zum Beispiel:

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...

Kann ich irgendetwas tun, um diese nicht unterbrechenden Space-Entities zu entfernen?

2
Dtorr1981

html_entity_decode () , wie von Lodder vorgeschlagen, ist ein geeigneter Funktionsaufruf. Wenn Sie aufeinanderfolgende Leerzeichen "wischen" möchten, reicht ein einfacher, weitreichender Regex-Aufruf aus.

* Ich habe den Unicode-Pattern-Modifikator hinzugefügt, um eine maximale Abdeckung durch Ersatz zu gewährleisten.

Demo :

$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);

Ausgabe:

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...

Natürlich können Sie auch Regex verwenden, wenn Sie keine anderen zu dekodierenden Entitäten haben und Leerzeichen komprimieren möchten.

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