web-dev-qa-db-fra.com

Trim nbsp; avec PHP

J'ai une phrase comme ça.

1       2     3   4

Comme vous le voyez, entre 1 2 et 3 textes, il y a des espaces supplémentaires. Je veux la sortie avec un seul espace entre eux. donc ma sortie sera 1 2 3 4.

Si j'utilise le trim, il ne peut supprimer que les espaces blancs, mais pas que   Comment puis-je utiliser PHP trim fonction pour obtenir la sortie comme ça?

23
spotlightsnap
$str = "1 $nbsp;     2     3   4";
$new_str = str_replace(" ", '', $str);
24
Lotus Notes

Trouvé sur php.net, fonctionne très bien:

$myHTML = " abc"; 
$converted = strtr($myHTML, array_flip(get_html_translation_table(HTML_ENTITIES, ENT_QUOTES))); 
trim($converted, chr(0xC2).chr(0xA0));

Source: http://php.net/manual/en/function.trim.php#98812

60
Tobias Fünke

Une réponse plus inclusive pour ceux qui veulent juste faire un trim:

$str = trim($str, " \t\n\r\0\x0B\xC2\xA0");

Même trim gestion des entités html:

$str = trim(html_entity_decode($str), " \t\n\r\0\x0B\xC2\xA0");

Cette interaction html_entity_decode et trim est décrite dans les documents PHP ici: http://php.net/manual/en/function.html-entity-decode.php#refsect1- function.html-entity-decode-notes

19
Chaoix
$str = " abc ";

echo trim($str, "\xC2\xA0"); //abc
10
Kenny

si votre chaîne contient "",

$str="1       2     3   4";
$s = str_replace("  ","",$str);
print $s;
2
ghostdog74
echo str_replace ( " ", "", "1       2     3   4" );

rappelez-vous juste que vous devez faire écho au résultat de str_replace et vous n'avez également pas à vous soucier des espaces blancs et le navigateur n'affichera qu'un seul espace blanc.

1
Steve Obbayi

Un peu tard pour répondre mais j'espère que cela pourrait aider quelqu'un d'autre. Le plus important lors de l'extraction de contenu html est d'utiliser tf8_decode () en php. Ensuite, toutes les autres opérations de chaîne deviennent un jeu d'enfant. Même les caractères étrangers peuvent être remplacés en copiant directement les caractères collés du navigateur dans le code php. La fonction suivante remplace   Par un espace. Ensuite, tous les espaces blancs supplémentaires sont remplacés par un seul espace blanc à l'aide de preg_replace(). Les espaces blancs avant et arrière sont supprimés à la fin.

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

$html = "1 $nbsp;     2     3   4";
$output = clean($html);
echo $output;

1 2 3 4

1
Sriram Ranganathan