netbozum
wmaraci reklam

Php ile metindeki kelimeleri alma

5 Mesajlar 1.054 Okunma
Toplam 5 mesaj ve 1.054 görüntüleme
acebozum
KaplanBozum

yazilimsoru yazilimsoru Yazilimsoru.com Kullanıcı
  • Üyelik 05.03.2018
  • Yaş/Cinsiyet 27 / 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 27 / 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.

kişi bu mesajı beğendi.

no time for caution

yazilimsoru yazilimsoru Yazilimsoru.com Kullanıcı
  • Üyelik 05.03.2018
  • Yaş/Cinsiyet 27 / 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 27 / 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.

kişi bu mesajı beğendi.

no time for caution
wmaraci
wmaraci

yazilimsoru yazilimsoru Yazilimsoru.com Kullanıcı
  • Üyelik 05.03.2018
  • Yaş/Cinsiyet 27 / 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