vatanyazilim adlı üyeden alıntı: mesajı görüntüle
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>");