Top-Themen

Aktuelle Themen (A bis Z)

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, 5706 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 ..
Ähnliche Inhalte
PHP
PHP Funktionen
Frage von tobmesPHP3 Kommentare

Hi, ich bin es mal wieder ;) Ich habe jetzt glaube ich ein kleines Verständnisproblem mit Funktionen und Rückgabewerten ...

PHP
Mysqli in eigenen PHP Funktionen
gelöst Frage von BuddersPHP4 Kommentare

Halli Hallo liebe Administratoren, schon mal Vorweg: ich habe mich die letzten Wochen dran gemacht mich mit PHP zu ...

PHP
PHP Mail Funktion
Frage von gamerffPHP5 Kommentare

Hallo Forum, ich versuche grade mit der PHP mail() Funktion ein Kontaktformular zu erstellen. Leider kommt beim absenden immer ...

PHP
MySQL Select in Kombination mit einer PHP-Funktion
Frage von icegetPHP2 Kommentare

Hallo liebe Community, ich habe folgendes Problem: Ich habe eine PHP-Funktion. Diese nennt sich getWeekFromID. Diese gibt anhand einer ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 19 StundenWindows 102 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 21 StundenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 1 TagInternet3 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 1 TagDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte16 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...

Windows Server
GPO nur für bestimmte Computer
Frage von Leo-leWindows Server13 Kommentare

Hallo Forum, gern würde ich ein Robocopy script per Bat an eine GPO hängen. Wichtig wäre aber dort der ...

Windows Server
KMS Facts for Client configuration
Frage von winlinWindows Server13 Kommentare

Hey Leute, wir haben in unserem Netz nun einen neuen KMS Server. Haben Bestands-VMs die noch nicht aktiviert sind. ...

Windows Tools
Software-Tool zum Entfernen von bösartigem Windows
Frage von emeriksWindows Tools11 Kommentare

Hi, siehe Betreff hat das jemals irgendjemand schonmal sinnvoll eingesetzt? (MRT) E.