Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

PHP Funktion

Frage Entwicklung PHP

Mitglied: dempsey

dempsey (Level 1) - Jetzt verbinden

07.10.2010, aktualisiert 10.10.2010, 5680 Aufrufe, 12 Kommentare

ich bin noch nicht wirklich belesen mit den funktionen von php und würde mich über ein bisschen hilfe freuen

Hallo Zusammen,
ich programmiere momentan mit PHP/HTML ein Gästebuch und es läuft soweit auch schon. Nun möchte ich mein Gästebuch verfeinern.
Als Aufgabe wurde mir gestellt, dass ich zu Smilies einbinde, wenn jemand ins Textfeld , usw. eingibt.
Mit meinen beiden Arrays war ich auch erfolgreich doch nun soll ich das mit einer Funktion ins Gästebuch einbinden und da komme ich ins schleudern.
01.
 
02.
	function textsmileconv($text){ 
03.
	 
04.
		$smileys = array(0 => ":-)", 1 => ";-)", 2 => ":-\(", 3 => ":-P", 4 => ":-D"); 
05.
		$gif = array(0 => "smile.gif", 1 => "zwinker.gif", 2 => "sad.gif", 3 => "zunge.gif", 4 => "lol.gif"); 
06.
 
07.
		for($i = 0; $i <= 4; $i++) { 
08.
		//alle vorkommen von ? ersetzen durch ? 
09.
		$text = eregi_replace($smileys[$i],"<img src='img/".$gif[$i]."' alt='$smileys[$i]'>",$text); 
10.
11.
		return($textsmileconv); 
12.
			 
13.
14.
 
Hinter der Variable $text verbirgt sich die Textausgabe in meinem Gästebuch. Leider greift diese Funktion nicht und ich weiss nicht wieso.
Kann mir da jemand helfen?

LG,
dempsey
Mitglied: awagner82
07.10.2010 um 16:31 Uhr
Hi,

also erstmal würde ich $text zurückgeben, das ist ja der String den du verändert hast...

Und dann einfach aufrufen mit

//Beispiel: $text = ";)"
$ausgabe = textsmileconv($text);

und dann ggf. ausgeben
echo $ausgabe;

und dann hast du dein smiley

;)
Bitte warten ..
Mitglied: dempsey
07.10.2010 um 16:42 Uhr
Also.. ich bin mir nicht sicher ob ich deinen Vorschlag richtig interpretiert habe. Jedenfalls hat es noch nicht so funktioniert. Ich gebe dir mal noch die andere Funktion hinzu

ausgabe.php
01.
 
02.
	function noname($count) { 
03.
	 
04.
				//function eingabe	 
05.
				//das alles bitte auch in eine Funktion 
06.
				//rückgabe wert auch hier -> string mit return(); 
07.
		if( $_POST["name"] == NULL &&  $_POST["text"] == NULL) { 
08.
				//Kommentar: abesende noch nicht gedrücktz, keine items in liste 
09.
			$value = "<center><p class=\"texteingabe\"><blink>Bitte gib etwas in die Textfelder ein</blink></p></center>"; 
10.
11.
		else{ 
12.
				//Kommentar: tables werden erstellt. items in der Liste werden verpackt und alte items werden gespeichert 
13.
			$value = "<table id=\"ausgabebox\" align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">"; 
14.
			$value.= "<tr>"; 
15.
			$value.= "<td id=\"textboxen\">"; 
16.
	 
17.
					//ausgabe der neuen daten zuerst 
18.
			$value.= ausgabe($_POST["name"], $_POST["text"], $count+1); 
19.
 
20.
								 
21.
					//ausgabe der alten daten:		 
22.
					//for schleife mit $i von 0 bis $count		 
23.
								 
24.
			for($i = 0; $i < $count; $i++) {			 
25.
				$tempOldName="name" . $i; 
26.
				$tempOldText="text" . $i; 
27.
				//$tempOldId="id" . $i; 
28.
					 
29.
				$value.= ausgabe($_POST[$tempOldName], $_POST[$tempOldText], $count-$i); 
30.
31.
			$value.= "</div>"; 
32.
			$value.= "</td>"; 
33.
			$value.= "</tr>"; 
34.
			$value.= "</table>"; 
35.
			 
36.
37.
		return($value); 
38.
39.
	 
40.
	function textsmileconv($text){ 
41.
	 
42.
		$smileys = array(0 => ":-)", 1 => ";-)", 2 => ":-\(", 3 => ":-P", 4 => ":-D"); 
43.
		$gif = array(0 => "smile.gif", 1 => "zwinker.gif", 2 => "sad.gif", 3 => "zunge.gif", 4 => "lol.gif"); 
44.
 
45.
		for($i = 0; $i <= 4; $i++) { 
46.
		//alle vorkommen von ? ersetzen durch ? 
47.
		$text = eregi_replace($smileys[$i],"<img src='img/".$gif[$i]."' alt='$smileys[$i]'>",$text); 
48.
49.
		return($text); 
50.
			 
51.
	}
Ausschnitt der index.php

01.
	$anzeigen = textsmileconv($count, $text); 
02.
	echo $anzeigen;
Bitte warten ..
Mitglied: Arano
07.10.2010 um 17:50 Uhr
Hallo Dempsey

ERSTENS:
Vergleiche folgendes...
01.
function textsmileconv($text){
01.
textsmileconv($count, $text);
Das wirft evtl. auch eine Fehlermeldung - werden die bei dir ausgegeben !?

ZWEITENS:
ereg_replace arbeitet mit regulären Ausdrücken PHP-Manual - ereg_replace
Weil du einfache Zeichenketten als "Suchmuster" verwendet, wäre hier str_replace besser/schöner PHP-Manual str_replace


Viel Erfolg beim weiter tüfteln
~Arano
Bitte warten ..
Mitglied: dempsey
08.10.2010 um 08:32 Uhr
Hallo Arano,

ich bin wie gesagt noch nicht so mit php belesen aber danke für den Tipp mit str_replace. Wenn man eine funktion kennengelernt hat und sie funktioniert, dann nimmt man sie anscheinend öfters - möglichst für alle Situationen

das mit dem auslesen der Funktion. Ich weiss nicht genau, was ich alles an dieser Stelle erreichen kann. Deswegen habe ich einfach mal rumgespielt. Für das geschulte Auge ist es bestimmt eine Qual was ich hier fabriziert hab aber ich bin gerade etwas hilflos
Bitte warten ..
Mitglied: Arano
08.10.2010 um 09:30 Uhr
Moin moin,

Ja stimmt da hast du recht, das habe ich auch so gemacht
Aber mir fiel gerade noch etwas an ereg_replace auf, seit PHP 5.3 ist die Funktion sowieso missbilligt.

Funktioniert es denn jetzt ?
Der Beitrag ist __noch nicht__ als gelöst markiert und aus deiner Antwort kann ich nicht auslesen ob es nun läuft oder was es nun für Probleme sind !?

~Arano
Bitte warten ..
Mitglied: awagner82
08.10.2010 um 09:46 Uhr
Hi dempsey,

also nochmal langsam ... was genau funktioniert denn nicht?
bzw. was meinst du mit auslesen der Funktion?

Du hast eine Funktion, die einen (in deinem Fall) Text erwartet.
Der Text wird auf Smileys geprüft und diese ggf. ersetzt.
Danach wir der Text wieder zurückgegeben.

Das hier funktioniert doch auch ... (geringfügig geändert)
Wo steckt Dein Problem?

Edit: Rufst Du diese Funktion in deiner übergeordneten Funktion überhaupt auf?

01.
   
02.
<?php 
03.
 
04.
function textsmileconv($text){  
05.
 
06.
	$smileys = array(0 => ":-)", 1 => ";-)", 2 => ":-\(", 3 => ":-P", 4 => ":-D");  
07.
	//$gif = array(0 => "smile.gif", 1 => "zwinker.gif", 2 => "sad.gif", 3 => "zunge.gif", 4 => "lol.gif");  
08.
	$gif = array(0 => "SMILE", 1 => "ZWINKER", 2 => "SAD", 3 => "ZUNGE", 4 => "LOL");  
09.
 
10.
	for($i = 0; $i <= 4; $i++) {  
11.
 
12.
		//$text = eregi_replace($smileys[$i],"<img src='img/".$gif[$i]."' alt='$smileys[$i]'>",$text);  
13.
		$text = str_replace($smileys[$i],$gif[$i],$text); 
14.
 
15.
		}  
16.
	 
17.
	return($text); 
18.
	}  
19.
 
20.
	 
21.
$text = "AA:-)BB"
22.
$ausgabe = textsmileconv($text); 
23.
 
24.
echo "vorher: ".$text
25.
echo "<br />"
26.
echo "nachher: ".$ausgabe.""
27.
 
28.
?> 

Gruß
Bitte warten ..
Mitglied: dempsey
08.10.2010 um 10:23 Uhr
Hallo awagner,

das Problem liegt darin, dass der Text nicht durch die Smilies ersetzt wird. Die Funktion wird nicht gescheit ausgegeben.. Mein Ergebnis sieht so aus, dass ich die komplette Ausgabe nicht sehe oder jenachdem nur die Strings (ohne smilies)
Ich poste nochmal das ganze - an welcher Stelle die Smilies eingebunden werden sollem.

01.
<?php 
02.
 
03.
	 
04.
	function ausgabe($name, $text, $id) { 
05.
	//so verändern dass hier ein string zurück geggeben wird 
06.
	// ausgabe erst dort wo die fkt aufgerufen wird 
07.
		 
08.
		$value = "<table>"; 
09.
		$value.= "<tr>"; 
10.
 
11.
		$value.= "<td><b>Name</b></td>"; 
12.
		$value.= "<td>"; 
13.
		$value.= "<input name=\"hiddenname\" type=\"hidden\" value=\"1\"/>"; 
14.
		$value.= "<div id=\"nametextbox\">"; 
15.
		$value.= $name; 
16.
		$value.= "</p>"; 
17.
		$value.= "</td>"; 
18.
		$value.= "</tr>"; 
19.
		$value.= "<tr>"; 
20.
		$value.= "<td><b>Text </b></td>"; 
21.
		$value.= "<td>"; 
22.
		$value.= "<input name=\"hiddentext\" type=\"hidden\" value=\"1\"/>"; 
23.
		$value.= $text;                                                                                                          //similies hier ersetzen 
24.
		$value.= "</td>"; 
25.
		$value.= "<tr>";			 
26.
		$value.= "<td><div id=\"datebox\">";				 
27.
		$value.= date('d.m.Y'); 
28.
		$value.= "</td><br/>"; 
29.
		$value.= "#" . $id; 
30.
 
31.
		$value.= "</tr>"; 
32.
		$value.= "</table>"; 
33.
 
34.
		 
35.
 
36.
		return($value); 
37.
38.
	 
39.
	function noname($count) { 
40.
	 
41.
		if( $_POST["name"] == NULL &&  $_POST["text"] == NULL) { 
42.
 
43.
			$value = "<center><p class=\"texteingabe\"><blink>Bitte gib etwas in die Textfelder ein</blink></p></center>"; 
44.
45.
		else{ 
46.
 
47.
			$value = "<table id=\"ausgabebox\" align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">"; 
48.
			$value.= "<tr>"; 
49.
			$value.= "<td id=\"textboxen\">"; 
50.
	 
51.
					//ausgabe der neuen daten zuerst 
52.
			$value.= ausgabe($_POST["name"], $_POST["text"], $count+1); 
53.
 
54.
 
55.
								 
56.
			for($i = 0; $i < $count; $i++) {			 
57.
				$tempOldName="name" . $i; 
58.
				$tempOldText="text" . $i; 
59.
				//$tempOldId="id" . $i; 
60.
					 
61.
				$value.= ausgabe($_POST[$tempOldName], $_POST[$tempOldText], $count-$i); 
62.
63.
			$value.= "</div>"; 
64.
			$value.= "</td>"; 
65.
			$value.= "</tr>"; 
66.
			$value.= "</table>"; 
67.
			 
68.
69.
		return($value); 
70.
71.
	 
72.
	function textsmileconv($text){ 
73.
 
74.
		$smileys = array(0 => ":-)", 1 => ";-)", 2 => ":-(", 3 => ":-P", 4 => ":-D"); 
75.
		$gif = array(0 => "smile.gif", 1 => "zwinker.gif", 2 => "sad.gif", 3 => "zunge.gif", 4 => "lol.gif"); 
76.
 
77.
		for($i = 0; $i <= 4; $i++) { 
78.
			$text = str_replace($smileys[$i],"<img src='img/".$gif[$i]."' 'alt=".$smileys[$i]."'>",$text); 
79.
80.
		return($value); 
81.
			 
82.
83.
 
84.
?> 
85.
 
Bitte warten ..
Mitglied: awagner82
08.10.2010 um 10:38 Uhr
ok ...
wenn ich das mal kurz überfliege, sieht deine Lösung meiner Meinung nach so aus:

in Zeile 23:
01.
<? 
02.
$text; //similies hier ersetzen  
03.
?>
folgendes machen:

01.
<? 
02.
 $value.= textsmileconv($text); 
03.
?>
Vorraussetzung, dass das funktioniert ist aber, dass du in Zeile 78 die Variable $value, die Du in Zeile 80 zurückgibst, füllst:
01.
<? 
02.
$value = str_replace($smileys[$i],"<img src='img/".$gif[$i]."' 'alt=".$smileys[$i]."'>",$text);  
03.
?>
Gruß
Bitte warten ..
Mitglied: Arano
08.10.2010 um 10:40 Uhr
Hi

Sollte Zeile 23 nicht so lauten:
01.
$value.= textsmileconv($text);
*weiterles...*

OHHH ! oO
In der Funktion textsmileconv wird die Variable $value zurückgegeben ABER diese Variable existiert nicht !
So sollte Teile 80 wahrscheinlich so lauten:
01.
return($text); 
Es wurde schlicht und einfach (wegen der falschen Variable) "nichts/null/leer" zurückgegeben.


~Arano
Bitte warten ..
Mitglied: awagner82
08.10.2010 um 10:42 Uhr
So geht es auch - japp.
Sag ich doch ;)
Bitte warten ..
Mitglied: dempsey
08.10.2010 um 11:22 Uhr
hey danke euch.. ist ja eigentlich auch logisch aber vielleicht kommt das noch bei mir... nach ner Zeit danke euch
Bitte warten ..
Mitglied: Arano
08.10.2010 um 11:36 Uhr
Kein Problem

Ja klar, das kommt noch. Aber das ist auch ein Fehler aus der Kategorie die man zuerst immer übersieht und erst nach dem 20. mal "erkennt".

~Arano
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
LAN, WAN, Wireless
Hat On Networks PL500PS WLAN-Funktion? (4)

Frage von Andy1987 zum Thema LAN, WAN, Wireless ...

PHP
gelöst Php regex und Array (5)

Frage von Thomas91 zum Thema PHP ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (14)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...