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

Zeichen ersetzen

Frage Entwicklung PHP

Mitglied: schrecke

schrecke (Level 1) - Jetzt verbinden

11.06.2007, aktualisiert 12.06.2007, 5699 Aufrufe, 19 Kommentare

test_dresden_01.jpg -> Test Dresden

Hi,

also ich hab nen Bildergaleriescript und möchte, das darunter angeziegt wird, um was für eine Bild es sich handelt. Dabei sollen jedoch die Dateiendung, der Unterstrich und evtl. Nummerierungen nicht angezeigt werden.

Ich hab bissl veruscht das hin zu bekommen, aba bis jetzt es nicht geschafft. Das muss wohl mit regulären ausdrücken gemacht werden. Aba so ein Spezi in php bin ich nicht, das ich das schaffe.
Könnt ihr mir weiter helfen?

Das allerbeste wäre sowas. Unter dem Bild "test_dresden_01.jpg" wird "Test Dresden" angezeigt. Also Zahlen, Dateiendung und Unterstriche weg, sowie am besten noch den Anfangsbuchtaben jedes Wortes groß. Obwohl, wenn letzteres zu viel Aufwand ist, wäre das nicht allzu schlimm, da ich die Bilder auch in Großschreibung abspeichern könnte.

Ich danke euch

schrecke
[EDIT 19.06.2007]
Thread gelöst und geschlossen
masterG(Moderator)
Mitglied: fachinformatiker
11.06.2007 um 15:28 Uhr
Google->PHP zeichen ersetzen oder php text ersetzen hilft.
Yahoo oder ähnliche übrigens auch.
Hier einmal vorgekaut:
$text="test_dresden_01.jpg";
$textneu="";
$array=split($text);
foreach($array as $wort)
{

if($wort==".") #einziger Haken:ich setze hier vorraus, dass im Dateinamen kein Punkt ist(außer eben die Endung)
{break;}
$textneu.=$wort;
}
$array=explode($textneu,"_");
$textneu="";
foreach($array as $wort)
{
$textneu.=ucfirst($wort)." ";
}
$textneu=rtrim($textneu);
echo $textneu; #Rückgabe:"Test Dresden"

Da, wenn du es jetzt nicht schaffst... ;)
Bitte warten ..
Mitglied: schrecke
11.06.2007 um 16:09 Uhr
nee so einfach is das ni mit google und dem Rest, denn das was ich suche findet man ni so schnell, vor allem ni wenn man ni viel Ahnung hat.

Danke dir für den Code, aba das geht irgendwie ni, da bekomm ich 5 Fehler:

Warning: Wrong parameter count for split() in E:\Other\xampp\htdocs\datei.php on line 4

Warning: Invalid argument supplied for foreach() in E:\Other\xampp\htdocs\datei.php on line 5

Warning: explode() [function.explode]: Empty delimiter. in E:\Other\xampp\htdocs\datei.php on line 11

Warning: Invalid argument supplied for foreach() in E:\Other\xampp\htdocs\datei.php on line 13

weißt du woran das liegen kann?
Bitte warten ..
Mitglied: Dani
11.06.2007 um 17:54 Uhr
Moin ihr beide,
so, ich habe auch noch eine kl. Lösung auf dem Herzen.

01.
# Exmaple: Bildname 
02.
$pic_name="test_dresden_01.jpg"
03.
 
04.
 
05.
# Filtert Leerzeichen, Nummerierung und Dateiendung 
06.
$pic_name=preg_split("/[_]/", $pic_name); 
07.
$filter_nums=array_pop ($pic_name); 
08.
 
09.
# Erzeugt aus dem Array einen String 
10.
foreach($pic_name as $string
11.
12.
	 $picname.=" ".$string
13.
	 
14.
15.
 
16.
# Ausgabe des neuen Namens 
17.
echo $picname;
Der Vorteil meiner Methode ist, dass die Bilder auch "test_dresden_versuch_01.jpg heißen können. Sprich es wird immer die Zahl und die Endung (egal welche -jpg, jpeg) abgeschnitten.


Gruß
Dani
Bitte warten ..
Mitglied: schrecke
11.06.2007 um 18:33 Uhr
super, das geht. Danke dir Dani. Ich hab noch den Teil $picname.=" ".$string; in $picname.=" ".ucfirst($string); geändert, damit die Anfangsbuchstaben groß sind. Jetzt ist mir aber was aufgefallen, woran ich ni gedacht hab. Kannst du mir das ganze noch für Umlaute einbauen? Ergo das ae zu ä usw. wird?

Das wär klasse
Bitte warten ..
Mitglied: Dani
11.06.2007 um 19:00 Uhr
Schln zuhören...daran habe ich nicht mehr gedacht.
Na gut, weil heute Montag ist und ich gut drauf bin hier noch die kl. Erweiterung:
01.
# Exmaple: Bildname 
02.
$pic_name="täst_dresden_01.jpg"
03.
 
04.
#Ersetzt alle Sonderzeichen 
05.
$sonder_char=array
06.
	"1" => array("ä", "ö", "ü", "ß"), 
07.
	"2" => array("ae", "oe", "ue", "ss"
08.
); 
09.
 
10.
for ($i=0;$i < 4;$i ++) 
11.
12.
	$pic_name=str_ireplace($sonder_char["1"][$i], $sonder_char["2"][$i], $pic_name); 
13.
14.
 
15.
# Filtert Leerzeichen, Nummerierung und Dateiendung 
16.
$pic_name=preg_split("/[_]/", $pic_name); 
17.
$filter_nums=array_pop ($pic_name); 
18.
 
19.
# Erzeugt aus dem Array einen String 
20.
foreach($pic_name as $string
21.
22.
     $picname.=" ".ucfirst($string); 
23.
     
24.
25.
 
26.
# Ausgabe des neuen Namens 
27.
echo $picname;
Ungeteste Skizze!


Gruß
Dani
Bitte warten ..
Mitglied: schrecke
11.06.2007 um 19:35 Uhr
feini dank dir

jetzt brauch ich nur noch eins und zwar das Bild wird an einer anderen Stelle eingestellt, als die Beschreibung dazu. Ergo muss ich ja auch an einer anderen Stelle die Funktion für den Namen aufrufen. Kann man Variablen an eine Funktion übergeben? Ich sollte vlt. noch sagen das ich die Funktion in ner ...inc.php liegen hab
Bitte warten ..
Mitglied: Dani
11.06.2007 um 19:45 Uhr
n einer anderen Stelle die Funktion für den Namen aufrufen
Du hast also meine Zeilen in eine Funktions gepackt?!

man Variablen an eine Funktion übergeben?
Klar, sonst gäbe das keinen Sinn! Beispiel:
01.
function NAME($name
02.
03.
  echo $name
04.
05.
.... 
06.
NAME("test");
Gruß
Dani
Bitte warten ..
Mitglied: schrecke
11.06.2007 um 20:09 Uhr
also bei mir ist das so derzeit.

es wird ne function geladen (image_random) welche das Bild (<img .../>) generiert. So. Derzeit ist deine Funtion da noch mit eingaut, was aba so wahrscheinlich nicht geht, weil ...
So, nun möchte ich jedoch an anderer Stelle auf der Seite den Bildertitel laden. So und da muss ich doch irgendwie das ergebnis der Funktion image_random an die function picture_name (Bsp. mal für das generieren des Bildertitels) geben.

Noch was. Ich bau das ganze in en Forum ein. Das aufrufen der function für das Bild wird in der template-datei gemacht, in Mitten von html (Also einfach <?php ... ?>) rein geschrieben. Und nun will ich später an anderer Stelle, den Namen aufrufen.
Bitte warten ..
Mitglied: schrecke
11.06.2007 um 20:24 Uhr
so hier mal der Code vom Bildgenerator.
das Session_start am Anfang ist ausgeklammert, da das mit dem Board-Sessionmanagement nicht geht (war dafür gedacht, pro Session nur ein Bild zu haben, und nicht bei jedem click ein neuen Bild)

01.
// @session_start(); 
02.
 
03.
function start() 
04.
05.
    //This is the directory route to the folder 
06.
	$directory="./images/image_random/header/"
07.
 
08.
	if (!$_SESSION['PicFilename']) 
09.
10.
	         $dir=opendir( $directory ); 
11.
 
12.
	         //This is a relative link to the directory if it is not in the same directory as the file you are displaying the images on 
13.
 
14.
	         $pattern="\.(gif|jpg|jpeg|png|bmp|swf)$"
15.
	         if(!$dir
16.
17.
	         	die("Fehler, kein Bild vorhanden oder php-Fehler"); 
18.
19.
	         $s=readdir($dir); 
20.
	         $count="0"
21.
	         $image
22.
	         while($s
23.
24.
	         	if(ereg($pattern, $s)) 
25.
26.
	         	$image[$count]=$s
27.
	         	$count++; 
28.
29.
	         	$s=readdir($dir); 
30.
31.
	         closedir($dir); 
32.
                  // Ausgabe 
33.
	         $limit=count($image); 
34.
	         $limit--; 
35.
	         $randNum=rand(0,$limit); 
36.
	         $size=getimagesize("$directory$image[$randNum]"); 
37.
 
38.
			 $_SESSION['PicFilename'] 	= $image[ $randNum ]; 
39.
			 $_SESSION['PicSize']		= $size[ 3 ]; 
40.
41.
 
42.
	// building the img-tag; first creating a template string for a later replacing with real values 
43.
         // aus originalem Link "{SIZE}" entfernt 
44.
	$imgTemplate = "<img src=\"{SOURCE}\" alt=\"Zufallsbild aus Dresden: {IMGNAME}\" border=\"0\" width=\"953px\"/>"
45.
 
46.
	// building the search patterns including key values of the template string 
47.
	$searchPattern = 	array( '{SOURCE}', '{SIZE}', '{IMGNAME}' ); 
48.
	$replacePattern = 	array( 	$directory . $_SESSION['PicFilename'], 
49.
								$_SESSION['PicSize'], 
50.
								$_SESSION['PicFilename'] ); 
51.
 
52.
	$imgLink = str_replace( $searchPattern, $replacePattern, $imgTemplate ); 
53.
         echo $imgLink;  
54.
}
Was hier kursiv steht, ist normal ausgklammert mit / /
[Edit 11.06.2007 20:28]
Ich habe den PHP-Code in einen Coodeblock gepackt. Das macht die ganze Sache ein bisschen übersichtlicher.

Dani
(Moderator)
Bitte warten ..
Mitglied: Dani
11.06.2007 um 20:31 Uhr
Es müssste reichen, wenn du am Ende folgende Zeile hinzufügst:
01.
... 
02.
return $_SESSION['PicFilename'
03.
}
Somit wird der Name zurückgegeben. Aufruf:
01.
... 
02.
$file_name=start(); 
03.
..
JEtzt steht in der Vari der Filename. Diesen kannst du nun weiter verwerten.


Gruß
Dani
Bitte warten ..
Mitglied: schrecke
11.06.2007 um 20:34 Uhr
werd ich versuchen, danke dir

@ dein edit: ich hab das mit dem code auch versucht, nur war das bei mir alles auf einer Zeile, zwar bund aba ... kA, nur so ;)
Bitte warten ..
Mitglied: schrecke
11.06.2007 um 21:55 Uhr
so , also das geht jetzt soweit. Zwar etwas anders, aba es geht

Nur ein Problem hab ich jetzt, nicht alle Bildernamen werden korrekt generiert. Ich zähl das gleich mal direkt auf:

"haus_des_buches.jpg" wird zu "Haus Des"
"goldener_reiter.jpg" wird zu "Goldener"
"zwinger.jpg" wird gar nicht abgezeigt
"kongresszentrum.jpg" wird gar nicht angezeigt

Im Quelltext sieht es genauso aus. Kannst du dir erklren, woran das liegt? Da kommt auch noch bei weiteren Bildern vor.
Ach und das passiert sowohl, wenn die die Namens-Funktion in die Random-Funktion intergriere, als auch wenn ich die auslagere.

soweit, schrecke
Bitte warten ..
Mitglied: Dani
11.06.2007 um 22:11 Uhr
So schrecke ,
das war mein Fehler. Ich habe vergessen, den Punkt und die Zahlen auszuschließen. Hier die Version v0.4:
01.
<?php 
02.
 
03.
#Exmaple: Bildname 
04.
$pic_name="kongresszentrum_1331.jpg"
05.
 
06.
#Ersetzt alle Sonderzeichen 
07.
$sonder_char=array
08.
    "1" => array("ä", "ö", "ü", "ß"), 
09.
    "2" => array("ae", "oe", "ue", "ss"
10.
); 
11.
 
12.
for ($i=0;$i < 4;$i ++) 
13.
14.
    $pic_name=str_ireplace($sonder_char["1"][$i], $sonder_char["2"][$i], $pic_name); 
15.
16.
 
17.
# Filtert Leerzeichen, Nummerierung und Dateiendung 
18.
$pic_name=preg_split("/[_.0123456789]/", $pic_name); 
19.
$filter_nums=array_pop ($pic_name); 
20.
 
21.
# Erzeugt aus dem Array einen String 
22.
foreach($pic_name as $string
23.
24.
     $picname.=" ".ucfirst($string); 
25.
     
26.
27.
 
28.
# Ausgabe des neuen Namens 
29.
echo $picname;
Also bei mir funktioniert alles wunderbar. Mach noch ein paar Tests und gib uns einfach Rückmeldung.


Gruß
Dani
Bitte warten ..
Mitglied: schrecke
11.06.2007 um 22:25 Uhr
joa super, klappt alles.

Ich danke dir.

//schrecke
Bitte warten ..
Mitglied: schrecke
12.06.2007 um 10:45 Uhr
so ich noch mal wieder ... es hört ni auf :D

Da mit den Umlauten ersetzten geht natürlich super, jedoch gibts n Problem bei bestimmten Namen, was ich vorher nicht bedacht habe.
Nebenbei noch, dein Code - "1" => array("ä" , "ö" , "ü"), "2" => array("ae", "oe", "ue") - hab ich umgedreht. Denn die Dateinamen werden ohne umlaute geschrieben, jedoch sollen ja die Namen auf der Homepage mit Umlauten, sofern vorhanden, da stehen. Das geht auch super. glaeserne_man...jpg wird zu Gläseren Manufa... .

Jetzt gibts aba n weiteres Problem. Z.B. die FraUEnkirche oder Das BlaUE Wunder ... der werden nun auch Umlaute rein geschrieben, was ni wirklich sein soll, klar. Kann man irgendwie Asunahmen bestimmten? Ich hatte mir das schon so gedacht und es folgender Maßen probiert:

"1" => array("ae", "oe", "ue", "axxe", "oxxe", "uxxe", "sxxs"),
"2" => array("ä" , "ö" , "ü" , "ae" , "oe" , "ue" , "ß")

Das funktioniert jedoch leider irgendwie ni risch. Lokal im Backup-Forum fuktioniert es nur bei "das BlaUE Wunder" (das_blaue_wunder.jpg) und "FraUEnkirche" (frauenkirche.jpg). Jedoch bei "GroSSer Garten" nicht.
Und online, im realen Forum, funktioniert das überhaupt nix. Da werden die Namen fein mit "xx" geschrieben. Ist die Lösung die ich da versucht hab einfach nicht optimal?

Aba um bestimmte Namen von der Umbenennung auszuschließen, muss ich ja irgendein Hinweiß im Namen geben. Anders hatte ich bis jetzt keine Idee.

Ich glaub das es wäre ja fast sinnvoller, die Beschreibung zu nem Bild extern zu laden oder? Da spart man sich das ganze umgebaue der Namen. Also das in ner Datei steht: blaues_wunder_jpg => "Das wunderschöne Blaue Wunder" oder sowas. Weiß ni ...

soweit
Bitte warten ..
Mitglied: Dani
12.06.2007 um 12:47 Uhr
Moin,
Nebenbei noch, dein Code - "1" => array("ä" , "ö" , "ü"), "2" => array("ae", "oe", "ue") - hab
ich umgedreht. Denn die Dateinamen werden ohne umlaute geschrieben, jedoch sollen ja die
Namen auf der Homepage mit Umlauten, sofern vorhanden, da stehen. Das ### auch super.
glaeserne_man...jpg wird zu Gläseren Manufa... .
Ich dachte, du wolltest ä,ö,ü ersetzen durch die entsprechenden Zeichen?! Egal...ich habe mich vielleicht auch verlesen!
Das Problem habe ich noch gar nie in Augenschein genommen. So auf den 1. bzw 2. weiß ich auch keine Idee, wie du das Problem beheben könntest. Wenn dann müsstest du deinen kompletten Duden hinterlegen => viel Spaß beim Tippen.

Ich glaub das es wäre ja fast sinnvoller, die Beschreibung zu nem Bild extern zu laden oder?
Da spart man sich das ganze umgebaue der Namen. Also das in ner Datei steht:
blaues_wunder_jpg => "Das wunderschöne Blaue Wunder" oder sowas. Weiß ni ...
Würde ich so machen, da deine Dateinamen wirklich extrem variieren.


Gruß
Dani
Bitte warten ..
Mitglied: schrecke
12.06.2007 um 13:27 Uhr
mh hast du da ne Lösung parat, wie man sowas anstellt?

Und hast du ne Idee, warum das mit dem "axxe wird zu ae" nicht funktioniert?
Bitte warten ..
Mitglied: Dani
12.06.2007 um 13:30 Uhr
mh hast du da ne Lösung parat, wie man sowas anstellt?
Ne, leider nicht!

Und hast du ne Idee, warum das mit dem "axxe wird zu ae" nicht funktioniert?
Hast du an der for - Schleife die "4" ersetzt duch die Anzahl der Sonderzeichen?!


Gruß
Dani
Bitte warten ..
Mitglied: schrecke
12.06.2007 um 13:47 Uhr
ahhhh ... *weg renn* :D ... nein das hab ich nicht gemacht, mist.

Ok nun ist endgültig alle super und läuft so wie es sein soll
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(3)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Powershell - In Textdatei suchen und ersetzen (5)

Frage von Raaja89 zum Thema Batch & Shell ...

Windows Netzwerk
Windows Server 2003 SBS Netzwerk durch neuen Server Ersetzen (9)

Frage von MultiStorm zum Thema Windows Netzwerk ...

Batch & Shell
gelöst Suchen und Ersetzen mehrerer Suchbegriffe per Batch (4)

Frage von makroll10 zum Thema Batch & Shell ...

VB for Applications
gelöst VBA Text mit Format übertragen und Zeichen ergänzen (11)

Frage von Dau12345 zum Thema VB for Applications ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...