v2.5.2
Giriş yap

foreach de mb_substr sorunu

rephp7
446 defa görüntülendi
  <div class="row">
    <?php
   ....
   $yazarlarimiz = explode(',', $veri[0]["yazarx"]);

   foreach ($yazarlarimiz as $yazarpin) { ?>

      <span class="yazar">
        <h4><?php echo mb_substr($yazarpin, 0, 1, 'UTF-8'); ?></h4>
      </span>
      <div class="user-block">
        <span class="username"><a href=""><?=$yazarpin?></a>
        </span>
        <span class="description">eposta:</span>
      </div>
      <?php } ?>
    </div> 

Merhaba yukarıdaki kod ile, yazarlar sütunundan virgül ile ayrılmış olan yazar adlarını explode yapıp
foreach ile döndürüyorum.

Sorun şurda:
<?php echo mb_substr($yazarpin, 0, 1, 'UTF-8'); ?>
sadece birinci yazarın baş harfini getiriyor, diğer yazarların adlarının baş harfi gelmiyor.

Şöyle yaparsamda:
<?php echo mb_substr($yazarpin, 0, 2, 'UTF-8'); ?>

Bu defa da birinci yazarın adından ilk iki harfi getiriyor ve diğer yazarların adının ilk harfi görünüyor.

Nasıl bu durumu düzeltebilirim?

Cevap yaz
Cevaplar (5)
abdullahx
1166 gün önce

Trimi oraya eklemeniz bir şey değiştirmez hocam, şuraya eklemeyi deneyin

<h4><?php echo mb_substr(trim($yazarpin), 0, 2, 'UTF-8'); ?></h4>
abdullahx
1166 gün önce

İkisi arasındaki kullanılan hafıza ve geçen süreyi karşılaştırdım da en azından küçük verilerde hissedilir bir fark olmaz, gözünüze hangisi hitap ediyorsa onu kullanın derim :)

rephp7
1166 gün önce

@abdullahx, teşekkürler hocam siz cevap yazarken bende başka bir şey daha buldum, o şekilde de çalışıyor. Ek olarak buraya onu da yazayım faydalanan olur belki:
array_map ile trim kullanınca da doğru çıktı verdi.

$yazarlarimiz = array_map('trim', explode(',', $veri[0]["yazarx"]));

İki yöntemde oluyor hangisini seçmeliyim sizce?

rephp7
1166 gün önce

abdullahx hocam dediğinizi düşünmüştüm, kontrol ettim fazladan boşluk yok ama yine de explode içinde çalışır mı bilmeden trim ekledim öylede denedim olmadı.

$yazarlarimiz = explode(',', trim($veri[0]["yazarx"]));

abdullahx
1166 gün önce

Çalışıyormuş gibi görünüyor Link
Belki de kayıtta isimleri listelerken virgül ile isim arasında fazladan boşluk bırakıyorsunuzdur.