8768 sujets

Développement web côté serveur, CMS

Modérateur
Bonjour,

Dans les doc PHP il y a souvent la réponse à ces petits travers dans les commentaires :


<?php
function str_shuffle_unicode($str) {
    $tmp = preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY);
    shuffle($tmp);
    return join("", $tmp);
}
?>
$str = "?eker yârim"; // My sweet love
echo str_shuffle($str); // i?eymr?ekr ?
echo str_shuffle_unicode($str); // ?r mreyeikâ

https://www.php.net/manual/fr/function.str-shuffle.php#107656

Une fonction maison qui gère le soucis. N'ayant jamais rencontré le soucis j'ai pas mieux sous le coude ! Smiley smile (mais j'ai testé et ca a l'air de marcher)

Bonne journée
Modérateur
Bonjour,

il y aurait aussi les fonctions utf8_encode et utf8_decode qui sont peut-être aussi de bon secours.
$str = 'abéàçâc?deféàç';
echo $str .'<br>';
$shuffled = str_shuffle($str);
echo  $shuffled .' - heu ?? <br>';// raté

$str= utf8_decode($str);
$shuffled = str_shuffle($str);// on recommence
echo  $shuffled .' - heu bah nan  <br>';// encore raté

echo utf8_encode($shuffled) .' oki !';// ça semble tout bon 
echo '<br>';


Cela ressemble à un tour de passe-passe, je l'accorde.
cdt
Modifié par gcyrillus (18 Feb 2022 - 13:48)
Bonjour à vous !

Voici la fonction, telle qu'elle me convient :

function shuf2str( $argument ) 
{
if( is_array( $argument ) ) $argument = tag( $argument ) ;
$argument = preg_split( "//u", strip_tags( $argument ) ) ;
shuffle( $argument ) ;
return join( VIDE, $argument ) ;
}


NB :
* Ma fonction tag concatène avec l'intercalaire chaine vide;
* ma constante VIDE contient la chaine vide.

Voici le contexte :

include "Data/necro.data" ; $grostr = str_repeat( tag( $necro ), 3 ) ;
$nom = nommer( "René Weil" ) ; $titre = "Le glyphe du Dasein" ;
 
$dedicace = array(
BR.$nom.VI.tag( $titre, "q" ),
"in $nom, Le Roman inachevé, Paris, 1956",
"© Éditions Gallimard, 1956"
) ; 

$main = array(
"h3" => $titre,
"<img src=\"https://i.ytimg.com/vi/VDPnuHs5_B8/hqdefault.jpg\" />",
tag( shuf2str( $necro ).DOT, "p" ),
htmllister( $necro, "span", "center id=\"necro\"" ),
tag( shuf2str( $grostr ).DOT, "p" ),
tag( shuf2str( $grostr ).DOT, "p" ),
tag( shuf2str( $grostr ).DOT, "p" ),
tag( shuf2str( $necro ).DOT, "p" ),
"dedicace" => join( VIBR, $dedicace ),
) ; 


Le résultat est https://dips.doobee.fr/

Merci de vos contributions; j'y reviendrai plus tard.