Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
3
Cevap
800
Tıklama
0
Öne Çıkarma
preg_replace içinde çıkarma
S
8 yıl
Çavuş
Konu Sahibi

Arkadaşlar selamlar. Şöyle bir sorunum var.

$text = "Bu bir cümledir.(Resim 1) Bu ikinci cümledir.(Resim 2)";

$yenitext = preg_replace("/\(Resim ([0-9]+)\)/", "<a data-test="test" rel="nofollow" style="word-wrap: break-word; text-decoration: underline;" target="_blank" onclick="return dhExternalLinkRedirect(this)" href="/ExternalLinkRedirect?module=pgdcode&messageId=130974707&url=#" onclick="$('.popup-gallery').magnificPopup('open', $1-1);" data-href="#" onclick="$('.popup-gallery').magnificPopup('open', $1-1);">$0</a>", $text);


Yukarıdaki kodda

Resim 1 yerine <a data-test="test" rel="nofollow" style="word-wrap: break-word; text-decoration: underline;" target="_blank" onclick="return dhExternalLinkRedirect(this)" href="/ExternalLinkRedirect?module=pgdcode&messageId=130974707&url=#" onclick="$('.popup-gallery').magnificPopup('open', 0);" data-href="#" onclick="$('.popup-gallery').magnificPopup('open', 0);">Resim 1</a>,
Resim 2 yerine <a data-test="test" rel="nofollow" style="word-wrap: break-word; text-decoration: underline;" target="_blank" onclick="return dhExternalLinkRedirect(this)" href="/ExternalLinkRedirect?module=pgdcode&messageId=130974707&url=#" onclick="$('.popup-gallery').magnificPopup('open', 1);" data-href="#" onclick="$('.popup-gallery').magnificPopup('open', 1);">Resim 2</a> elde etmek istiyorum

ancak mesela
Resim 2 yerine <a data-test="test" rel="nofollow" style="word-wrap: break-word; text-decoration: underline;" target="_blank" onclick="return dhExternalLinkRedirect(this)" href="/ExternalLinkRedirect?module=pgdcode&messageId=130974707&url=#" onclick="$('.popup-gallery').magnificPopup('open', 2-1);" data-href="#" onclick="$('.popup-gallery').magnificPopup('open', 2-1);">Resim 2</a> elde ediyorum.

Burda 1 çıkarma işlemini nasıl yaparım. Ustalar bakabilir mi? Teşekkürler.

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil





< Bu mesaj bu kişi tarafından değiştirildi stbolen -- 20 Ocak 2018; 23:56:23 >

R
8 yıl
Teğmen

http://php.net/manual/en/function.preg-replace-callback.php

Preg replace callback ile o metini degiskenler ile bir fonksiyon içinde üretebilirsin.



< Bu ileti mobil sürüm kullanılarak atıldı >

T
8 yıl
Yarbay

RegExp sadece desen bulup değiştirir; içinde aritmetik işlemler yapamazsın o yüzden arkadaşın bahsettiği gibi işlemi bir callback fonksiyon içinde yapabilirsin.



< Bu ileti mini sürüm kullanılarak atıldı >

T
8 yıl
Yarbay

Callback ile çözüm örneği. Örnekte (Resim 1) ifadesindeki parantezler RegExp 'teki belirteç parantezleri ile karışacağı için RegExp haricinde str_replace ile kaldırdım yoksa RegExp ifadesini düzenleyip RegExp içinde de halledilebilir.

quote:

<?php

function link_ekle($eslesmeler)

{
$parantezler = array("(",")"); //Bu kısım RegExp içinde halledilebilir.
$tmp="<a href=\"#\" onclick=\"$('.popup-gallery').magnificPopup('open',"
. ($eslesmeler[1]-1)
. ");\">"
. str_replace($parantezler, '', $eslesmeler[0])
. "</a>\n";
return $tmp;
}

$metin = "Bu bir cumledir.(Resim 1) Bu ikinci cumledir.(Resim 2)";

echo preg_replace_callback("|\(Resim ([0-9]+)\)|", "link_ekle", $metin);

?>


Deneme anından SS:

< Resime gitmek için tıklayın >





< Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 21 Ocak 2018; 14:56:33 >

< Bu ileti mini sürüm kullanılarak atıldı >

DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.