2012-03-26 3 views
36

Wie   entfernen (die versteckt sind) und SPACES in folgenden Text aberersetzen   Zeichen, die in Text versteckt sind

  • halten UNICODE Zeichen
  • halten <br> Tag

i getestet:

  • ich verwendete trim($string) => NICHT GEARBEITET
  • verwendet i str_replace('&nbsp;', '', $string) = NICHT
  • ARBEITETE>
  • i verwendet, um einige regex => NICHT

    ARBEITETE
      <br>تاريخ ورود: یکشنبه ۲۳ بهمن ماه ۱۳۹۰ 
    

UPDATE: Image of hidden   Dank

ENDLÖSUNG:

  $string = htmlentities($string, null, 'utf-8'); 
      $string = str_replace("&nbsp;", "", $string); 
+0

Verwenden Sie \ s in Ihrem regex –

+0

einen Raum passen ich es tat, aber nur Leerzeichen zwischen den Wörtern verändert.   gibt es noch – Behnam

+0

Sorry, können Sie den HTML-Text als Text, so dass ich es kopieren kann –

Antwort

25

Nicht getestet, aber wenn Sie verwenden so etwas wie:

$string = preg_replace("/\s/",'',$string); 

, dass alle Räume entfernen sollten.

UPDATE

alle Räume und &nbsp; Referenzen zu entfernen, verwenden so etwas wie:

$string = preg_replace("/\s|&nbsp;/",'',$string); 

UPDATE 2

diese

Versuchen:

$string = html_entity_decode($string); 

$string = preg_replace("/\s/",'',$string); 

echo $string; 

vergessen zu sagen, zurückzuverwandeln die HTML-Entities diese nach dem Austausch so hinzufügen:

htmlentities($string); 
+1

Ich doppelte Test es aber nicht funktioniert – Behnam

+0

Ihr Update entfernen Leerzeichen wieder, aber nicht nbsp; – Behnam

+0

Okay, ich werde sehen, ob ich es selbst testen kann –

0

Die se Cond Line ist in Ordnung, aber Sie entfernen nur  . Wenn Sie auch Leerzeichen entfernen möchten, fügen Sie:

str_replace(' ', '', $string); 
+0

nicht funktioniert. Ich habe Probleme mit   Hiddens in Text – Behnam

-1

eine gute Idee ersetzen, aber Sie haben eine Multibyte-Funktion zu verwenden. Sie können einige Implementierungen in den Kommentaren finden sich hier: http://php.net/manual/en/ref.mbstring.php

+0

es ist verwirrend. Können Sie eine einfachere Lösung vorschlagen? – Behnam

35

Diese Lösung funktioniert, ich habe es getestet:

$string = htmlentities($content, null, 'utf-8'); 
$content = str_replace("&nbsp;", "", $string); 
$content = html_entity_decode($content); 
+2

Die einzige Lösung, die für mich funktionierte! – RPDeshaies

+1

O. Mein. Gott. Endlich die Lösung, nach stundenlangem Suchen !! Ich danke dir sehr. Ich hatte Probleme mit   verhinderte meine tinymce Text, um schön zu brechen, also ersetzte ich alle von ihnen mit einem echten Leerzeichen: 'Funktion b09_remove_forced_spaces ($ Inhalt) { $ string = htmlentities ($ content, null, 'utf-8') ; $ content = str_replace (" ", "", $ string); $ content = html_entity_decode ($ content); return $ content; } add_filter ("the_content", "b09_remove_forced_spaces", 9); ' (schlechte Sache, dass stackoverflow Code Blöcke in Kommentaren nicht erlaubt – rassoh

0

Das ist für mich gearbeitet.

preg_replace("/&nbsp;/",'',$string)

0

Dies wird auch funktioniert:

function clean($str) 
{ 
    $str = str_replace("&nbsp;", " ", $str); 
    $str = preg_replace('/\s+/', ' ',$str); 
    $str = trim($str); 
    return $str; 
} 
1

Alle oben genannten Lösungen Art von Arbeit, bis man beginnt mit der deutschen Sprache zu arbeiten, wo es solche Briefe:

ä &auml; 

und andere ähnliche. Ich verwende den folgenden Code ein:

$string = preg_replace ("!\s++!u", ' ', $string); 

Weitere Details hier: PCRE(3) Library Functions Manual