Jump to content
php.lv forumi

Izvairīšanās no nezināmiem simboliem "apcērpjot" tekstu


Cibiņš

Recommended Posts

Nav apskaidrības, kā izvairīties no nezināmu simbolu iestarpināšanas apcērpjot tekstu.

 


$name=$row['tschalipashki'];
$character_limit=50;

 $replaced_header = array(' ', '&', 'Ā', 'ā', 'Č', 'č', 'Ē', 'ē', 'Ģ', 'ģ', 'Ī', 'ī', 'Ķ', 'ķ', 'Ļ', 'ļ', 'Ņ', 'ņ', 'Š', 'š', 'Ū', 'ū', 'Ž', 'ž');
$wrapped_header = array(' ', '&', 'Ā', 'ā', 'Č', 'č', 'Ē', 'ē', 'Ģ', 'ģ', 'Ī', 'ī', 'Ķ','ķ','Ļ','ļ','Ņ','ņ', 'Š', 'š', 'Ū', 'ū', 'Ž', 'ž');
$name = str_replace($wrapped_header, $replaced_header, $name);

$check_text_lenght = strlen($name);

if($check_text_lenght>=$character_limit){
$text_points='...';
}
else {
$text_points='';
}

$truncated_header = substr($name, 0, $character_limit).$text_points;

 

Ja "apcirpšana" iekrīt tieši tur, kur atrodas kāda garumzīme tā tas tiek parādīts kā jautājumsimbols. Kā lai izvairās no tādas situācijas? :(

 

Piem ieliekam tekstu "Jānīc novēl saviem klientiem priecīgus Ziemassvētkus un laimīgu jauno gadu".. :( :( :( Tas beidzas "letāli".. :(

 

Charactersets tabulai ir latin1 un collation-latin1_swedish_ci

Edited by Cibiņš
Link to comment
Share on other sites

$check_text_lenght = strlen($name);

 

tas jādara pirms str_replace (to vispār pašās beigās jāliek)

 

un ar mb_strlen:

 

$check_text_lenght = mb_strlen($name);

 

 

 

un visur jāizmanto fjas ar mb_ prefiksu, ja tādas ir. Piemēram:

 

$truncated_header = substr($name, 0, $character_limit).$text_points;

vietā vajag:

$truncated_header = mb_substr($name, 0, $character_limit).$text_points;

Ko tu darīsi, ja teksts būs kirilicā?

Edited by malinens
Link to comment
Share on other sites

Vispār nemainās, taspats gļuks vien ir, kad nowrapo tekstu kur teksta garums beidzas ar garumzīmi to garumzīmi atspoguļo kā jautājumzīmi iekš rombiņa :( Pietam vispār man liekas ka tad jau var iztikt bez tā replace jo teorētiski tas bija domāts aizvietot nobrukušos teksta simbolus..

 

$name='ģlāžšķūņīšģlāžšķūņīšģlāžšķūņīšģlāžšķūņīšģlāžšķūņīšģlāžšķūņīšģlāžšķūņīšģlāžšķūņīšģlāžšķūņīšģlāžšķūņīšģlāžšķūņīšģlāžšķūņīš';
$character_limit=20;

$check_text_lenght = mb_strlen($name);

if($check_text_lenght>=$character_limit){
$text_points='...';
}
else {
$text_points='';
}

$truncated_header = mb_substr($name, 0, $character_limit).$text_points;
$replaced_header = array(' ', '&', 'Ā', 'ā', 'Č', 'č', 'Ē', 'ē', 'Ģ', 'ģ', 'Ī', 'ī', 'Ķ', 'ķ', 'Ļ', 'ļ', 'Ņ', 'ņ', 'Š', 'š', 'Ū', 'ū', 'Ž', 'ž');
$wrapped_header = array(' ', '&', 'Ā', 'ā', 'Č', 'č', 'Ē', 'ē', 'Ģ', 'ģ', 'Ī', 'ī', 'Ķ','ķ','Ļ','ļ','Ņ','ņ', 'Š', 'š', 'Ū', 'ū', 'Ž', 'ž');
$name_str = str_replace($wrapped_header, $replaced_header, $truncated_header);


echo $name_str;

Edited by Cibiņš
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...