Russische karakters detecteren
Goedemiddag forum leden,
Ik probeer Russische karakters in een formulier inzending te vinden. Maar het lukt me niet om dit voor elkaar te krijgen:
Ik heb een eenvoudig voorbeeld geschreven, maar zelfs dan blijft uitkomst "Geen Russisch". Enig idee waarom?
Update: ik zie dat Russische karakters niet doorkomen, maar mijn variabelen waren iets zoals:
Ik probeer Russische karakters in een formulier inzending te vinden. Maar het lukt me niet om dit voor elkaar te krijgen:
Ik heb een eenvoudig voorbeeld geschreven, maar zelfs dan blijft uitkomst "Geen Russisch". Enig idee waarom?
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
$my_form_value = "����������";
$banned_words = "����������";
$words = explode(',', $banned_words);
foreach ($words as $word) {
if ( preg_match("/\b".$word."\b/i", $my_form_value) ) {
echo "Wel Russisch";
} else {
echo "Geen Russisch";
}
}
$banned_words = "����������";
$words = explode(',', $banned_words);
foreach ($words as $word) {
if ( preg_match("/\b".$word."\b/i", $my_form_value) ) {
echo "Wel Russisch";
} else {
echo "Geen Russisch";
}
}
Update: ik zie dat Russische karakters niet doorkomen, maar mijn variabelen waren iets zoals:
Gewijzigd op 11/02/2024 18:17:44 door Guido -
Volgens mij zijn ‘abc’ niet alle Russische tekens.
Wel ? = ?
b = ?
en c = s in het Russisch.
Hou er ook rekening meer dat het Russische alfabet double-byte is.
????? ??????????, ???????.
Toevoeging op 11/02/2024 20:57:38:
Haha, dit moderne forum snapt geen buitenlands.
Wel ? = ?
b = ?
en c = s in het Russisch.
Hou er ook rekening meer dat het Russische alfabet double-byte is.
????? ??????????, ???????.
Toevoeging op 11/02/2024 20:57:38:
Haha, dit moderne forum snapt geen buitenlands.
Hoi,
Die abc was een voorbeeld, omdat Russische karakters niet getoond worden hier. Vul hetzelfde willekeurige Russisch woord of letter in bij beide variabelen, dan zul je zien dat mijn code niet werkt. Met abc werkt het natuurlijk wel.
Guido
Die abc was een voorbeeld, omdat Russische karakters niet getoond worden hier. Vul hetzelfde willekeurige Russisch woord of letter in bij beide variabelen, dan zul je zien dat mijn code niet werkt. Met abc werkt het natuurlijk wel.
Guido
Misschien met mb_ereg_match?
Met deze code lukt het .
Toevoeging op 11/02/2024 22:45:10:
En hiermee ook
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$my_form_value = "???";
$banned_words = "???,??????";
$words = explode(',', $banned_words);
echo '<pre>' . print_r( $words, TRUE ) . '</pre>';
foreach ( $words as $word ):
$pattern = "\b" . $word . "\b";
echo '<pre>' . $pattern . '</pre>';
if ( mb_ereg( $pattern , $my_form_value ) ):
echo "Wel Russisch";
else:
echo "Geen Russisch";
endif;
endforeach;
?>
$my_form_value = "???";
$banned_words = "???,??????";
$words = explode(',', $banned_words);
echo '<pre>' . print_r( $words, TRUE ) . '</pre>';
foreach ( $words as $word ):
$pattern = "\b" . $word . "\b";
echo '<pre>' . $pattern . '</pre>';
if ( mb_ereg( $pattern , $my_form_value ) ):
echo "Wel Russisch";
else:
echo "Geen Russisch";
endif;
endforeach;
?>
Toevoeging op 11/02/2024 22:45:10:
En hiermee ook
Thanks! Dus heeft met multibytes te maken.. Kun je uitleggen waarom dit blijkbaar multibytes is?
Guido
Guido
Wil je de Russische taal of het Cyrillisch alfabet herkennen?
Of gaat het je, vanwege de $banned_words, vooral om specifieke scheldwoorden en andere beladen termen?
Of gaat het je, vanwege de $banned_words, vooral om specifieke scheldwoorden en andere beladen termen?
Proefondervindelijk vastgesteld.
Ik moest van de voornaam en achternaam de eerste letter hebben.
Met een RUS letter lukte dat niet
En later iets in mysql .
en
geven verschillende lengtes in multibytes.
Toevoeging op 12/02/2024 08:29:23:
In aansluiting op Ward van der Put
https://stackoverflow.com/questions/3212266/detecting-russian-characters-on-a-form-in-php
https://browse-tutorials.com/snippet/check-if-text-contains-cyrillic-characters-php
Ik moest van de voornaam en achternaam de eerste letter hebben.
Met een RUS letter lukte dat niet
Code (php)
1
substr( $first_name, 0, 2 ) . $last_name; // first 2 characters because of multibyte characters
En later iets in mysql .
en
geven verschillende lengtes in multibytes.
Toevoeging op 12/02/2024 08:29:23:
In aansluiting op Ward van der Put
https://stackoverflow.com/questions/3212266/detecting-russian-characters-on-a-form-in-php
https://browse-tutorials.com/snippet/check-if-text-contains-cyrillic-characters-php
Gewijzigd op 12/02/2024 08:06:07 door Adoptive Solution
Quote:
Of gaat het je, vanwege de $banned_words, vooral om specifieke scheldwoorden en andere beladen termen?
Klopt, om specifieke woorden.
Quote:
Met deze code lukt het
Ik merk trouwens dat detecteren beter gaat met mb_ereg ipv mb_ereg_match. Niet helder waarom.
Guido
Adoptive Solution op 11/02/2024 20:57:05:
Haha, dit moderne forum snapt geen buitenlands.
Haha, dit moderne forum snapt geen buitenlands.
Ik kan 'm wel eens Russisch, Chinees en weet-ik-veel-wat-nog-meer leren, maar dan moet ik eerst even een mooie testomgeving fixxen voor mijzelf. Maar ik ga er zeker naar kijken. UTF-8 is hier best ruk inderdaad.
Gewijzigd op 12/02/2024 09:13:16 door - Ariën -
Aannemende dat je de tutorial over Unicode al hebt doorgewerkt, weet je dat je voor het herkennen van bepaalde Russische woorden niet hoeft te weten of tekst Russische tekens bevat. Je kunt woorden ook direct vergelijken met Russische woorden uit een Unicode woordenboek.
Doe dat dan wel nadat je de Unicode strings en woorden hebt genormaliseerd, bij voorkeur met Intl::Normalizer.
Of laat het je database doen. Met 1 query scheelt het weer een hoop PHP-code.
Doe dat dan wel nadat je de Unicode strings en woorden hebt genormaliseerd, bij voorkeur met Intl::Normalizer.
Of laat het je database doen. Met 1 query scheelt het weer een hoop PHP-code.
Het lijkt erop dat je alle Russische karakters uit het Cyrillische alfabet met deze reg-ex kan herkennen:
[\x{0400}-\x{04FF}]
[\x{0400}-\x{04FF}]
Gewijzigd op 12/02/2024 12:37:47 door - Ariën -
Ik gebruikte dus preg_match() totdat ik er achter kwam dat het niet werkte met Russische (Cyrillische) woorden. Maar hetzelfde voor bepaalde Poolse woorden, etc. Maar wanneer ik mb_ereg() gebruik werkt het wel naar behoren. Dus het eerste voorbeeld van Adoptive Solution hier.
Er zijn meer talen die Cyrillische karakters gebruiken. Bijvoorbeeld Oekraïens en Bulgaars.
Dan zou puur herkenning van 1 karakter niet voldoende zijn.
Dan zou puur herkenning van 1 karakter niet voldoende zijn.
Hoi Ivo,
Ik noem Russisch, want daar liep ik tegen aan. Maar ik wil eigenlijk specifieke woorden kunnen detecteren in elke taal. Met mb_ereg() lijk ik een eind te komen..
Guido
Ik noem Russisch, want daar liep ik tegen aan. Maar ik wil eigenlijk specifieke woorden kunnen detecteren in elke taal. Met mb_ereg() lijk ik een eind te komen..
Guido
Gewijzigd op 15/02/2024 16:37:31 door Guido -




