lostyazilim
tr.link

Php ile metindeki kelimeleri alma

5 Mesajlar 993 Okunma
lstbozum
tr.link

yazilimsoru yazilimsoru Yazilimsoru.com Kullanıcı
  • Üyelik 05.03.2018
  • Yaş/Cinsiyet 26 / E
  • Meslek Web developer
  • Konum İstanbul Avrupa
  • Ad Soyad İ** K**
  • Mesajlar 437
  • Beğeniler 132 / 131
  • Ticaret 0, (%0)
Merhaba arkadaşlar.Benim istediğim şey şu şekilde bir metin olsun;

asdaskaskşksd @yazilimsoru asdfşsdfkşsldf @deneme lsdkalsdadşlaskd @kullanıcı.

Şimdi ben bu metindeki @ ile başlayanları almak ve onları veritabanına tek tek kaydetmek istiyorum.
Yani yazilimsoru'yu ayrı deneme'yi ayrı bir şekilde eklemek istiyorum.Bunu nasıl yapabilirim?
 

 

Web sitem: yazilimsoru.com
wmaraci
reklam

Decimas Decimas WM Aracı Kullanıcı
  • Üyelik 19.04.2015
  • Yaş/Cinsiyet 26 / E
  • Meslek Developer
  • Konum İstanbul Avrupa
  • Ad Soyad E** E**
  • Mesajlar 820
  • Beğeniler 1 / 302
  • Ticaret 1, (%100)
Bu regex deseni ile istediğin kısımları alabilirsin.



$pattern = '/(@[\w\d]+)/';
$text = 'asdaskaskşksd @yazilimsoru asdfşsdfkşsldf @deneme lsdkalsdadşlaskd @kullanıcı @user @muzır';

preg_match_all($pattern, $text, $matches);

print_r($matches);


Sonra $matches içinde foreach dönüp ya tek tek eklersin veya implode ile virgülle ayırıp string şeklinde de kaydedebilirsin.
yazilimsoru

kişi bu mesajı beğendi.

no time for caution

yazilimsoru yazilimsoru Yazilimsoru.com Kullanıcı
  • Üyelik 05.03.2018
  • Yaş/Cinsiyet 26 / E
  • Meslek Web developer
  • Konum İstanbul Avrupa
  • Ad Soyad İ** K**
  • Mesajlar 437
  • Beğeniler 132 / 131
  • Ticaret 0, (%0)
Decimas hocam cevabınız için teşekkür ederim.Şöyle bir kod yazmaya çalıştım ama olmuyor hata alıyorum.
kodlar;

$pattern = '/(@[\w\d]+)/';
$text = 'asdaskaskşksd @yazilimsoru asdfşsdfkşsldf @deneme lsdkalsdadşlaskd @kullanıcı @user @muzır';

preg_match_all($pattern, $text, $matches);



$ayrac = ";";
$dizi=$matches;
$userlist= implode($ayrac,$dizi);




$user_arr = explode(";",$userlist);

$user_arr = array_unique($user_arr);
foreach ($user_arr as $user) {
echo $user."
";
}
 

 

Web sitem: yazilimsoru.com

Decimas Decimas WM Aracı Kullanıcı
  • Üyelik 19.04.2015
  • Yaş/Cinsiyet 26 / E
  • Meslek Developer
  • Konum İstanbul Avrupa
  • Ad Soyad E** E**
  • Mesajlar 820
  • Beğeniler 1 / 302
  • Ticaret 1, (%100)
Dikkat ettiysen $matches içeriği array in arrays şeklinde, implode'da düşen kısım iki aray oluyor, implode nested array desteklemez. Zaten ihtiyacın olan kısım $matches[0], öncesinde if ($matches[0]) şeklinde kontrol de etmen gerek aksi taktirde implode kısmına null bir sonuç giderse yine hata alacaksın.
yazilimsoru

kişi bu mesajı beğendi.

no time for caution
wmaraci
wmaraci

yazilimsoru yazilimsoru Yazilimsoru.com Kullanıcı
  • Üyelik 05.03.2018
  • Yaş/Cinsiyet 26 / E
  • Meslek Web developer
  • Konum İstanbul Avrupa
  • Ad Soyad İ** K**
  • Mesajlar 437
  • Beğeniler 132 / 131
  • Ticaret 0, (%0)
Decimas hocam kusura bakmayın geç yazıyorum.Dün $matches[0] yazmak aklıma geldi dur bir deneyeyim olacak mı dedim ve oldu.Şimdide sizin yazdığınızı gördüm ve doğru yaptığımdan emin oldum.Cevabınız için çok çok teşekkür ederim.Bayadır araştırıyordum sayenizde yapabildim.
 

 

Web sitem: yazilimsoru.com
wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al