Seite 1 von 2

\n aus beitrag entfernen?

Verfasst: 02.12.2007 04:57
von terminatorx120
ich würde gerne eine Javascript funktion bei einem Onlick auf einem Bild verwenden, welche von Datenbank Einträgen in PHP "erstellt" wird, dafür müssen aber die neuen Zeilen für Javascript entfernt werden, sonst funktioniert es nicht richtig!

Es sieht wie folgt aus (mit Versuch zur Lösung):

Code: Alles auswählen

<?php
function no_nl($text){

$return = preg_replace('/\\n/', '', $text);

return $return;
}

$output = "<script type="text/javascript">
function openPic(pid, text) {
   document.getElementById('galleryitem').src=''+pid;
   if (text=='') {
   	text = 'Keine Bildbeschreibung vorhanden';
   }
   document.getElementById('galleryitemtext').firstChild.nodeValue = text;
  return true;
}
</script>";


[...]




while ($row = mysql_fetch_assoc($result1)) {
  $Eintrag = utf8_decode(nl2br($row['Eintrag']));
  $groesse = @GetImageSize("bilder/" . $row['Bild']);
  $output .= "<h3>$row[1]</h3>\n
/*<p><img src='bilder/".$row['Bild']."' ".$groesse[3]." alt='".utf8_decode($row['Headline'])."'></p>
<div>$Eintrag</div>" . "<p>eingetragen von <b>".utf8_decode($row['Name'])."</b> am <strong>" . datemaker2($row['Datum']) . "</strong>";*/

$picshow .= "<img onclick=\"openPic('bilder/$row[Bild]', '".utf8_decode($row['Headline'])."');document.getElementById('galleryitemeintrag').innerHTML = '".no_nl($Eintrag)."';\" style=\"border: 1px solid rgb(0, 0, 0); cursor: pointer;\" src=\"http://www.phpbb.de/images/nav/phpbb_logo.gif\" alt=\"".utf8_decode($row['Headline'])."\">";

} // while Ende
$picshow .= "";
$output .= <<<PICSHOW

<div style="margin: 5px;">Zur Vollansicht die Vorschaubilder anklicken.</div>
			<div style="overflow: auto; width: 100%; height: 134px; text-align: center;">
				<nobr style="height:800px">
        
							{$picshow}
									</nobr>
			</div>
			<div style="text-align: center; margin-top: 10px;">
				<img src="BILD" alt="" style="margin: 5px 15px 15px;" id="galleryitem">
				<div style="border: 1px solid rgb(170, 170, 170); padding: 5px; background: rgb(242, 242, 242) none repeat scroll 0%; text-align: center; margin-bottom: 7px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-weight: bold" id="galleryitemtext">
					!!TEXT!!</div>
          <div style="border: 1px solid rgb(170, 170, 170); padding: 5px; background: rgb(242, 242, 242) none repeat scroll 0%; text-align: center; margin-bottom: 7px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-weight: bold" id="galleryitemeintrag">
					!!EINTRAG!!</div>
PICSHOW;

?>

Danke für die Hilfe!

Verfasst: 02.12.2007 12:46
von gn#36
Du hast dein Thema binnen weniger Minuten/Stunden mit einem Folgebeitrag nach oben geschoben.
Die Mindestwartezeit für Topic Bumping beträgt 24 Stunden.

Bitte passe deinen Beitrag an, lies Dir den phpBB.de-Knigge und den Hinweis zur Fragestellung und Rechtschreibung durch und beachte diese zukünftig.

Verfasst: 02.12.2007 15:15
von terminatorx120
Falscher Knopf!

Ich kann den beitrag nicht löschen???? :o
Der Button wird nicht angerzeigt!

Verfasst: 02.12.2007 22:55
von gn#36
Ah dann verstehe ich jetzt auch was das sollte...

ich habe das mal für dich erledigt ;)

Könntest du evtl. noch mal genauer beschreiben was du mit der Funktion eigentlich bewirken möchtest? Ich sehe da einen Mix aus JavaScript und PHP (oder besser eine PHP Datei die JavaScript ausgeben soll).

Wenn ich das richtig interpretiere, dann möchtest du Zeilenumbrüche entfernen?
Versuch das mal so:

Code: Alles auswählen

$return = preg_replace("/(\r|\n)/", '', $text); 
Wichtig sind die doppelten Anführungszeichen, nur hierin wird das \n umgewandelt, in den einfachen bleibt es als Text stehen.

Verfasst: 03.12.2007 00:25
von PureSpider
In dem fall is nen regex unnötig und langsam...

Code: Alles auswählen

$return = str_replace("\r",'',$text);
tuts auch ;)

Verfasst: 03.12.2007 15:33
von terminatorx120
Gibt es denn noch eine Methode, ohne die Zeilen umbrüche zu verlieren, so dass man den Text mit Zeilen erhält aber die JS Funktion trotzdem ausgeführt werden kann?
Vielleicht kann man das ja wieder Herstellen?

Verfasst: 03.12.2007 16:23
von PureSpider
terminatorx120 hat geschrieben:Gibt es denn noch eine Methode, ohne die Zeilen umbrüche zu verlieren, so dass man den Text mit Zeilen erhält aber die JS Funktion trotzdem ausgeführt werden kann?
Vielleicht kann man das ja wieder Herstellen?
Äh bitte?
Du willst die Zeilenumbrüche entfernen aber trotzdem erhalten...
Und Moses teilte das Meer...

Verfasst: 03.12.2007 16:26
von terminatorx120
Also es geht darum, dass ich eigentlich die Zeilenumbrüche behalten möchte, aber wenn ich einen String mit Zeilenumbrüchen in die JS Funktion eintrag, kann sie nicht ausgeführt werden!
Deshalb suche in nun einen Ausweg! :)


PS: LP 4 Ever!

Verfasst: 03.12.2007 16:32
von PureSpider

Code: Alles auswählen

$return_js = str_replace("\r",'',$text);
$return_normal = $text;
:o

Verfasst: 03.12.2007 20:37
von gn#36
Hast du schon probiert die Newlines einfach durch <br> oder <br /> zu ersetzen? Wenn du Zeilenumbrüche haben willst, dann reicht es ja wenn die im Browser dargestellt werden, oder?