soyisimleri tekil hale getirdim. Her soyisim kayıtta sadece bir tane var şeklinde düşünülebilir.
Normal de böyle bir yapı kullanmam, kullanmakta çok gereksiz. Ancak size lazım diye hazırladım, şu şekilde kullanabilirsiniz.
$kayit='<p> Adı Ahmet Soyadı Kurt T.C. Kimlik no: 12345678910</p><p> Adı Ayşe Soyadı Yıldız T.C. Kimlik no: 12345678912</p><p> Adı Murat Soyadı Yıldız T.C. Kimlik no: 12345678914</p><p> Adı Selim Soyadı Demir T.C. Kimlik no: 12345678916</p>';
function sil($kayit, $g,$tag,$tagbitis){
preg_match_all("/$g/s", $kayit, $soyisimler,PREG_OFFSET_CAPTURE);
if($soyisimler):
$ha = array();
foreach($soyisimler[0] as $k):
$before = str_split($kayit, $k[1]);
$h = @reset(explode($tagbitis, $before[1]));
$c = @end(explode($tag, $before[0]));
$l = $tag.$c.$h.$tagbitis;
if(@strlen($l) > 0) $ha[] = $l;
endforeach;
$kayit = str_replace($ha, "", $kayit);
endif;
return $kayit;
}
echo sil($kayit, "Demir", "<p>", "</p>");
Yukarıda ki kod da mantık hatası olmuş, bunu kullanabilirsin.
$kayit='<p> Adı Ahmet Soyadı Kurt T.C. Kimlik no: 12345678910</p><p> Adı Ayşe Soyadı Yıldız T.C. Kimlik no: 12345678912</p><p> Adı Murat Soyadı Yıldız T.C. Kimlik no: 12345678914</p><p> Adı Selim Soyadı Demir T.C. Kimlik no: 12345678916</p>';
function sil($kayit, $g,$tag,$tagbitis){
preg_match_all("/$g/s", $kayit, $soyisimler,PREG_OFFSET_CAPTURE);
if($soyisimler):
$ha = array();
foreach($soyisimler[0] as $k):
$before = substr($kayit, 0, $k[1]);
$h = @end(explode($tagbitis, $before));
$before = substr($kayit, $k[1], strlen($kayit));
$c = @reset(explode($tag, $before));
$l = $h.$c;
if(@strlen($l) > 0) $ha[] = $l;
endforeach;
$kayit = str_replace($ha, "", $kayit);
endif;
return $kayit;
}
echo sil($kayit, "Soyadı Yıldız", "<p>", "</p>");