Maxlength en strlen in php verschillen

Status
Niet open voor verdere reacties.

geenID

Gebruiker
Lid geworden
1 jul 2009
Berichten
312
Hallo allemaal,

Ik heb een textarea met een maxlength van 500. Wanneer ik er een stuk tekst in plak, en de lengte van de tekst bereken in PHP met strlen, dan zijn er opeens veel meer tekens dan 500!

Na een lange tijd op google te hebben gezocht vond ik dit: preg_replace("/(^[rn]*|[rn]+)[st]*[rn]+/", "r",$string);
Dit verminderd al een stuk tekens, maar nog steeds, bij elke enter, worden er 2 extra tekens geplakt in PHP.

Heeft iemand een oplossing waardoor de string in PHP alsnog op 500 tekens uitkomt?
 
Analyseer eens welke tekens het problemen geeft. Ik gok de speciale tekens zoals: ë á, ç etc...
 
Er zitten geen speciale tekens in, alleen wel een enter.

Dit is een voorbeeld tekst, waarbij HTML maxlength zegt dat dit precies 600 tekens zijn, terwijl PHP zegt dat het er 603 zijn.

What is this 'Lorem Ipsum' or 'Lorum Ipsum' stuff?

In publishing and graphic design, placeholder text is commonly used to demonstrate the elements of a document or visual presentation, such as font, typography, and layout. Even though using "lorem ipsum" often arouses curiosity because of its resemblance to classical Latin, it is not intended to have meaning. Where text is visible in a document, people tend to focus on the textual content rather than upon overall presentation, so publishers use lorem ipsum when displaying a typeface or design elements and page layout in order to direct the!
 
Laatst bewerkt:
PHP zegt bij mij gewoon 600 :confused: (var_dump op de formulier waardes)

Wat geeft hij bij jou als aantal aan wanneer de $_POST-waarde door var_dump heen haalt?
 
Sorry voor de late reactie, had problemen met mijn laptop.

Mijn var_dump zegt ook 600, terwijl strlen 605 terug geeft.
 
Het kan character set gerelateerd zijn, probeer het eens met mb_strlen()
 
Het moet wel met de character set te maken hebben, deze code:
PHP:
<?php
if($_SERVER['REQUEST_METHOD'] == "POST") {
    var_dump($_POST['message'], strlen($_POST['message']), mb_strlen($_POST['message']));
}
?>
<form action="" method="post">
    <textarea maxlength="600" name="message"></textarea>
    <button type="submit">Verstuur</button>
</form>
Levert bij mij het volgende resultaat op:
Code:
string 'What is this 'Lorem Ipsum' or 'Lorum Ipsum' stuff?

In publishing and graphic design, placeholder text is commonly used to demonstrate the elements of a document or visual presentation, such as font, typography, and layout. Even though using "lorem ipsum" often arouses curiosity because of its resemblance to classical Latin, it is not intended to have meaning. Where text is visible in a document, people tend to focus on the textual content rather than upon overall presentation, so publishers use lorem ipsum when displaying a typeface or design elements and page layout in order to direct the!' (length=600)
int 600
int 600

Mijn encoding staat op UTF-8
 
Vreemd, ook mijn encoding staat op UTF-8, maar krijg toch echt 605 terug. Hoe dan ook, ik gebruik wel substr() om de eerste 600 tekens op te halen, bedankt voor de moeite!
 
denk aan gewoon iso 1byte utf8 2bytes utf16 4byte (staat database ook utf8)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan