PHP Abfrage preg_match

Carrear

Erfahrenes Mitglied
Hi ich möchte eine Funktion als Filter erstellen. Hereich kommt ein Array. Dieses enthält den Titel, Den Beitrag und den Link eines Facebook Feed Beitrages.

Wenn der Titel einen A-Tag enthält, dann soll das Script das erste Bild aus dem Beitrag verlinkt darstellen, wenn der Titel keinen A-Tag enthält, dass soll das Script den Titel verlinkt darstellen.

Aber irgendwie klappts nicht. Er gibt mir immer beides als Titel aus.

Ich glaube es liegt daran, das preg_match IMMER etwas zurück liefert, egal ob der Titel einen A-Tag enthält oder nicht. Dementsprechend fällt die Entscheidung bei der !empty Abfrage immer auf den Else Fall.

PHP:
$meincontent = $variables['item']->title;
preg_match("#(<a[^>]+?>)#i", $meincontent, $result);
if(!empty($result)) {
	$meincontent = $variables['item']->description;
	preg_match("#(<img[^>]+?>)#i", $meincontent, $result1);
	list(, $img_tag) = $result1;
	return '<a href="' . check_url($variables['item']->link) . '">' . $img_tag . "</a>\n";
}else {
	return '<a href="' . check_url($variables['item']->link) . '">' . check_plain($variables['item']->title) . "</a>\n";
}

Hat jemand einen Lösungsansatz? Mir fällt nichts ein :(

VG Martin
 
Aus Mangel an Antowrten hab ichs jetzt anders gemacht - nehme einfach direkt nicht den titel sondern den inhalt, filtere alle html tags raus und kürze den text und .... tada.

Code:
$meincontent1 = $variables['item']->description;
			$meincontent1 = strip_tags($meincontent1); 
			$meincontent1 = substr($meincontent1, 0 , 120);
			return '<h3 style="display: inline;"><a href="http://www.facebook.com/david.mcallister">David McAllister</h3></a><br><a href="' . check_url($variables['item']->link) . '">' . $meincontent1. "...</a>\n";
 
Zurück