Bestimmten String per RegEx ersetzen

Wie sieht es damit aus?


PHP:
$orig = '<a href="http://www.domain.de/attachment.php?attachmentid=785"  title="Name:  Hits: Größe:  ">Anhang 785</a>';

preg_match('/attachmentid=([0-9]{1,}+)/', $orig, $id);

$neu = '<a href="http://www.domain.de/attachment.php?attachmentid=' .$id[1] .'" id="attachment' .$id[1] .'"><img src="http://www.idgames.de/attachment.php?attachmentid=' .$id[1] .'&amp;thumb=1" /></a>';

echo $neu;

Gruß Thomas
 
PHP:
<?php
error_reporting(E_ALL);

// Text bzw. String der durchsucht werden soll 
$string = <<<EOF
<a href="http://www.domain.de/attachment.php?attachmentid=785"  title="Name:  Hits: Größe:  ">Anhang 785</a>
EOF;

// das Suchmuster mit Delimiter und Modifer (falls vorhanden) 
$pattern = '#<a href="http://www.domain.de/attachment.php\?attachmentid=([[:digit:]]+)[ ]+title="[^"]*">]((?:[^<]|<(?!/?a>)|(?R))+)\</a>#i';

// Ersatzstring 
$ersatz = '<a href="http://www.domain.de/attachment.php?attachmentid=$1" id="attachment$1"><img src="http://www.idgames.de/attachment.php?attachmentid=$1&amp;thumb=1" /></a>';

// RegEx mit preg_replace() auswerten 
echo preg_replace($pattern, $ersatz, $string );

// ggf. auch: 
// echo preg_replace(, htmlentities(), ); 

?>
 
also hier ist etwas, wenn du alles allgemein als Attachment bezeichnest und des würde laufen:

PHP:
<?php
$alt = "<a href=\"http://www.domain.de/attachment.php?attachmentid=785\"  title=\"Name:  Hits: Größe:  \">Anhang 785</a>";

$suchmuster = array();
$suchmuster[0] = '/<a href=\"([^>]+?)\"  title=\"Name:  Hits: Größe:  \">([^>]+?)<\/a>/';

$link = '\1';
$name = '\2';

$ersetzungen = array();
$ersetzungen[0] = "<a href=\"$link\" id=\"attachment\"><img src=\"$link&amp;thumb=1\" /></a>";

$neu = preg_replace($suchmuster, $ersetzungen, $alt);
echo $neu;
?>

Wenn du noch ne id-nr. haben willst, dann kannst du noch preg_match (wie es mein vorgänger tombe geschrieben hat) verwenden. Dies würde dann so aussehen:

PHP:
<?php
$alt = "<a href=\"http://www.domain.de/attachment.php?attachmentid=785\"  title=\"Name:  Hits: Größe:  \">Anhang 785</a>";

$suchmuster = array();
$suchmuster[0] = '/<a href=\"([^>]+?)\"  title=\"Name:  Hits: Größe:  \">([^>]+?)<\/a>/';

$link = '\1';
$name = '\2';

preg_match('/attachmentid=([0-9]{1,}+)/', $alt, $id); 

$ersetzungen = array();
$ersetzungen[0] = "<a href=\"$link\" id=\"attachment$id[1]\"><img src=\"$link&amp;thumb=1\" /></a>";

$neu = preg_replace($suchmuster, $ersetzungen, $alt);
echo $neu;
?>

Edit: Du kannst auch andere Ersetzungen mit preg_replace vornehmen, deshalb habe ich es als ein array geschrieben. So wie es bei dir aussieht willst du ein Board oder CMS abändern. Kannst ja Beleidigingen ersetzen, ....

$link kannst du auch in einer if-Anweisung noch unterbringen; wäre aber hier nicht brauchbar. Ebenfalls den Namen. $link enthält schon deine Attachment-Id
 
Zuletzt bearbeitet von einem Moderator:
Hey,

habe leider jetzt erst nochmals ins Forum geschaut. Vielen Dank für die vielen Beiträge, besonders das letzte Codebeispiel konnte mir zum Erfolg helfen.

Damit ist das ganze erledigt und danke. :)
 
Zurück