preg_match() - Probleme

Ich habe doch genau beschrieben, wie es einzusetzen ist.

Übrigens empfehle ich dir, zusätzlich die in den Kommentaren der Referenzseite der rawurlencode()-Funktion beschriebene linkencode()-Funktion anstatt des ersten Einsatzes der htmlspecialchars()-Funktion ersetzen, da diese Funktion den URL besser kodiert.
 
Ich habe doch genau beschrieben, wie es einzusetzen ist.
Weis leider nicht, wo das stehen soll.

Aber back 2 topic:
PHP:
<?php
$eintrag = "Hallo das hier ist ein Link: [link]www.gooogle.de[/link], und hier steht noch einer: [link]www.web.de[/link]";

$findelink = preg_match_all("<\[link\](.+?)\[/link\]>", $eintrag, $link);

function generateLinkElement( $url )
    {
        return '<a href="'.@htmlspecialchars($url).'">'.@htmlspecialchars($url).'</a>';
    }

$generateLink = generateLinkElement($link);

$eintrag = preg_replace('<\[link\](.+?)\[/link\]>e', 'generateLinkElement("\1")', $eintrag);


echo $eintrag;
?>

So jetzt bekomme ich keine Fehlermeldung mehr (habe vor htmlspecialchars ein "@" gesetzt).

Wie bekomme ich allerdings die Fehlermeldung richtig weg (also ohne "@")?

Gumbo könntest du mir bitte sagen, wie ich es richtig einsetzten muss?

Ausgabe lautet momentan:
Code:
Hallo das hier ist ein Link: www.gooogle.de, und hier steht noch einer: www.web.de
, wobei man die Links anklicken kann...


MfG hab1cht
 
PHP:
<?php

	function generateLinkElement( $url )
	{
		return '<a href="'.htmlspecialchars($url).'">'.htmlspecialchars($url).'</a>';
	}


	$string = 'Hallo das hier ist ein Link: [link]www.gooogle.de[/link], und hier steht noch einer: [link]www.web.de[/link]';
	preg_replace('<\[link\](.+?)\[/link\]>e', 'generateLinkElement("\1")', $string);

?>
Übrigens solltest wissen, dass die genannten Pseudo-URLs keine gültigen URLs sind, da das Schema und der abschließende Schrägstrich nach dem Host-Namen fehlen.
 
Wenn ich deinen Code ausführe und danach: echo $string;
eintippe, wird alles unverändert ausgegeben.

Ich muss doch noch vorher:
$findelink = preg_match_all("<\[link\](.+?)\[/link\]>", $string, $link);
einfügen oder?
Und wie muss ich dann den weiteren Code verändern?

MfG hab1cht
 
Du musst den Rückgabewert der preg_match()-Funktion weiterverarbeiten. Denn die $string-Variable wurde ja nicht als Referenz übergeben.
 
So jetzt scheint alles zu funktionieren.
Mein Code:
PHP:
<?php
$eintrag = strip_tags($_POST['eintrag']);

    function generateLinkElement( $url )
    {
        return '<a href="'.htmlspecialchars($url).'">'.htmlspecialchars($url).'</a>';
    }

$eintrag = preg_replace('<\[link\](.+?)\[/link\]>e', 'generateLinkElement("\1")', $eintrag);

echo $eintrag;
?>

Vielen Dank Gumbo!

MfG hab1cht
 
Zurück