Regex för &nbsp

PHPportalen Forum Index » HTML/CSS/JavaScript/Design
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
Glitch



Medlem i: 938 dagar

Status: Offline



#741403
Inlägg Skrivet: 2017-01-27 13:41      Ämne: Regex för &nbsp Citera

Söker ett regex för matchning av ett eller flera nbsp;
Obs kan ej skriva ut & för då blir det som ett mellanslag
Nedan matchar endast ett nbsp;


KOD:
1:
var content = CKEDITOR.instances.editor1.getData();
2:
if(/^<p>(&nbsp;)+<\/p>$/.test(content) || content =='')
3:
{
4:
console.log('tomt '+content);
5:
}
6:
else
7:
{
8:
console.log('ej tomt '+content);
9:
}


<p>nbsp;</p> matchar.
<p>nbsp;nbsp;</p> matchar inte.

Om någon vet något annat sätt att förhindra en användare att endast skicka mellanslag i Ckeditor får ni gärna säga till.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Koenigsegg



Medlem i: 3719 dagar

Status: Offline



#741404
Inlägg Skrivet: 2017-01-27 14:53      Ämne: Citera

Du har med & - som väl är rätt - i regexpet, men inte i dina exempelsträngar. Kan det vara det som spökar?

Tillägg: html_entity_decode() och trim() skulle ju kanske kunna vara användbara också, om du vill ha lite färre olika sorters mellanslag att hålla reda på.
 

_________________
Aktiv frilansare inom ganska mycket som har med webben att göra Smile
Till toppen på sidan
Visa användarprofil Skicka privat meddelande MSN Messenger
Glitch



Medlem i: 938 dagar

Status: Offline



#741405
Inlägg Skrivet: 2017-01-27 19:32      Ämne: Citera

Jag kan inte ta med &-tecknet i exemplet för då syns det inget Smile
Trim verkar inte bita på & nbsp;
När formuläret skickas spottar det ut <p>& nbsp; & nbsp;</p> utan mellanslag mellan &-tecknet och nbsp; då.
Är det bara <p>& nbsp;</p> förhindras formuläret att skickas med mitt regex men med två eller fler & nbsp; mellan <p></p> skickas formuläret.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
harald_b
Moderator



Medlem i: 4658 dagar
Från: Tavesta
Status: Offline



#741406
Inlägg Skrivet: 2017-01-27 23:31      Ämne: Citera

Kan det vara ett spacetecken mellan de båda &nbsp;?
testa med:
KOD:
1:
/^<p>(&nbsp;|\s)+<\/p>$/


Tips:
Du kan skriva in nästan vilken kod du vill här på forumet genom att dela upp den i fragment som du sätter innanför inline.
[inline]&[/inline][inline]nbsp;[/inline]
ger
&nbsp;
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Koenigsegg



Medlem i: 3719 dagar

Status: Offline



#741407
Inlägg Skrivet: 2017-01-27 23:43      Ämne: Citera

Glitch skrev:
Trim verkar inte bita på & nbsp;


Trim arbetar inte med strängar på det viset, det är därför som htl_entity_decode kunde vara intressant först.

Glitch skrev:
När formuläret skickas spottar det ut <p>& nbsp; & nbsp;</p> utan mellanslag mellan &-tecknet och nbsp; då.
Är det bara <p>& nbsp;</p> förhindras formuläret att skickas med mitt regex men med två eller fler & nbsp; mellan <p></p> skickas formuläret.


Som regexpet är skrivet just nu så fungerar det om det *bara* är   mellan <p>-taggarna. (En eller flera) Som harald_b sa så kan du använda | för att stoppa in flera alternativ innanför parentesen, det är ett annat sätt att tackla det på.
 

_________________
Aktiv frilansare inom ganska mycket som har med webben att göra Smile
Till toppen på sidan
Visa användarprofil Skicka privat meddelande MSN Messenger
Glitch



Medlem i: 938 dagar

Status: Offline



#741410
Inlägg Skrivet: 2017-01-28 12:28      Ämne: Citera

Regexet som harald_b skrev gav samma resultat som mitt.
html_entity_decode förstod jag sisådär. Funktionen tog i alla fall bort &nbsp;. Formuläret spottar bara ut <p> </p>.
Ska jag göra ett regex som matchar <p></p> efter html_entity_decode och sedan kolla om det är tomt?

Jag kanske överdriver problemet. Har man ett kommentatorsfält skriver väl det flesta i något.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
harald_b
Moderator



Medlem i: 4658 dagar
Från: Tavesta
Status: Offline



#741411
Inlägget är accepterad som det rätta svaret Skrivet: 2017-01-28 14:31      Ämne: Citera

I så fall innehåller din sträng något annat än <p>&nbsp;&nbsp;</p>
Testa vad den här lilla kodsnutten ger för resultat:
KOD:
1:
var inspektera = '';
2:
for(var i = 0; i < content.length; i++) inspektera += content.charAt(i)+content.charCodeAt(i)+',';
3:
console.log(inspektera);


Bästa lösningen är antagligen att antingen läsa av innehållet från ckeditor i form av ren text, om det är möjligt, eller att först rensa bort alla taggar och avkoda alla teckenentiteter, och sedan kolla om strängen är något som kan liknas vid tom.
T.ex så här:
KOD:
1:
var d = document.createElement('div');
2:
d.innerHTML = content;
3:
if(/^\s*$/.test(d.textContent)) {
4:
   console.log('tomt '+content);
5:
}
6:
else{
7:
   console.log('ej tomt '+content);
8:
}
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Glitch



Medlem i: 938 dagar

Status: Offline



#741412
Inlägg Skrivet: 2017-01-28 15:30      Ämne: Citera

Den första koden du skrev spottade ut en hel del. Surprised
<60,p112,>62,&38,n110,b98,s115,p112,;59, 32,&38,n110,b98,s115,p112,;59, 32,&38,n110,b98,s115,p112,;59, 32,&38,n110,b98,s115,p112,;59, 32,&38,n110,b98,s115,p112,;59, 32,&38,n110,b98,s115,p112,;59, 32,&38,n110,b98,s115,p112,;59, 32,&38,n110,b98,s115,p112,;59,<60,/47,p112,>62,
10,

Den andra fungerade alldeles förträffligt.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
harald_b
Moderator



Medlem i: 4658 dagar
Från: Tavesta
Status: Offline



#741414
Inlägg Skrivet: 2017-01-28 16:17      Ämne: Citera

Felet förut var att det fanns en radbrytning efter </p>. Med den andra lösningen slipper du den typen av problem.
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget
PHPportalen Forum Index » HTML/CSS/JavaScript/Design
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic