2010-01-12 3 views
0

Exactement comme le titre demande:Comment pourrais-je supprimer tous les espaces entre guillemets simples Skipping se sont échappés des citations en PHP

Comment puis-je supprimer tous les espaces inutiles entre guillemets simples citations en Skipping échappées PHP?

Je suis à la recherche d'une implémentation rapide pour pré-préparer l'analyse. Je préférerais ne pas utiliser regex s'il serait plus lent que d'utiliser une simple boucle.

(Les guillemets doubles ci-dessous sont à des fins d'affichage uniquement)

exemples seraient:

entrée:

" testing ' this is a  \'test\' '  zzz  " 

sortie:

"testing ' this is a  \'test\' ' zzz" 
+0

Votre exemple ne semble pas très clair. On dirait que vous voulez supprimer les espaces excédentaires qui sont entre guillemets doubles mais pas guillemets simples? –

+0

Vous avez raison, je vais modifier mon affichage. Ty. – MichaelICE

Répondre

-1

Essayez ceci:

<?php 
$str = " testing ' this is a  \'test\' '  zzz  "; 

echo trim($str," "); 

?> 
+1

Cela supprimera les espaces entre guillemets simples. Pas ce que je cherche. – MichaelICE

0

Bon, le temps de psuedocode:

var shouldtrim = true; 
var escaped = false; 
foreach char in string 
    if char is whitespace and lastchar is whitespace and shouldtrim 
     remove char from string 

    if char is ' and not escaped 
     toggle shouldtrim 

    if char is \ 
     toggle escaped 
    else 
     escaped = false 
1
<?php 

$parts = preg_split('/((?<!\\\\)|(?<=\\\\\\\\))\'/', trim($data)); 

foreach ($parts as $index => &$part) { 
    if ($index % 2 == 0) { 
     $part = preg_replace('/\s{2,}/', ' ', $part); 
    } 
} 

echo join('\'', $parts); 

maintenant attendre la solution beaucoup plus simple que j'ai raté: p

+1

Comment cela gère-t-il une chaîne contenant '\\ ''? Étant donné que l'apostrophe n'est pas échappée. –

+0

Merci Anon, réponse éditée pour soutenir les barres obliques inversées échappées. – tanerkuc

Questions connexes