CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken |
23.10.2004, 17:55:10
|
Junior Member
|
|
Registriert seit: Aug 2002
Beiträge: 395
|
|
RegEx will nicht (bei Umlauten?)
Hi,
folgender Code soll in Texten nach Namen von Filmen suchen die in einer Datanbank vorhanden sind und diese verlinken, Filmnamen in den Texten sind immer komplett groß geschrieben:
PHP-Code:
$query = "SELECT `name` FROM filme_index";
$query = mysql_query($query);
while($q = mysql_fetch_array($query)) {
$search[]="/".strtoupper($q['name'])."/";
$replace[]="<a href="/filme/".word2url($q['name'])."/">".strtoupper($q['name'])."</a>";
}
Das klappt soweit ganz gut, z.B. bei Titeln wie "GROSSE HAIE - KLEINE FISCHE". Bei Titeln wie "SHREK - DER TOLLKÜHNE HELD" oder "SHREK 2 - DER TOLLKÜHNE HELD KEHRT ZURÜCK" aber z.B. nicht! Ich gehe davon aus das es an den Umlauten liegt, aber wieso klappt das so nicht?
Gruss, Michael
|
23.10.2004, 20:03:06
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
"Klappt nicht", ist keine sehr gute Fehlerbeschreibung.
Außerdem sehe ich keine Zeile, in der ersetzt wird.
|
23.10.2004, 20:07:27
|
Junior Member
|
|
Registriert seit: Aug 2002
Beiträge: 395
|
|
huups, die Zeile wo ersetzt wird kommt weiter unten:
$text=preg_replace($search,$replace,$text);
und zum Thema klappt nicht: es klappt halt nicht! ^^ bei den einen Filmtiteln setzt er wunderbar den Link hin so wie es sein soll und bei den andern scheint er die Übereinstimmung gar nicht zu finden, auf jeden Fall ist da nirgendswo ein Link im Quellcode! Bin ja selber Ratlos, ich habs jetzt zwar nochmal bei nen paar weiteren Filmen überprüft, aber mehr sagen als es scheint an den Umlauten zu liegen, kann ich leider auch nicht! :( Ich verstehs nicht!
//EDIT: http://www.movie-addict.de/filme/Gro...Kleine+Fische/ gucks dir selber an! Grosse Haie - Kleine Fische und Findet Nemo wird ersetzt, wunderbar, dagegen aber SHREK - DER TOLLKÜHNE HELD und SHREK 2 - DER TOLLKÜHNE HELD KEHRT ZURÜCK nicht!
|
23.10.2004, 20:11:47
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
1. Verwende lieber str_replace(), da dieses schneller ist.
2. Wandelst du Sonderzeichen mit htmlentities() um, bevor du die Titel ersetzen willst? Du musst natürlich zunächst die Titel in Links umwandeln und anschließend die Sonderzeichen ersetzen, da nach der Umwandlung der Sonderzeichen, diese natürlich nicht mehr gefunden werden.
|
23.10.2004, 21:10:01
|
Junior Member
|
|
Registriert seit: Aug 2002
Beiträge: 395
|
|
Hi,
str_replace werde ich mal testen, aber: Wozu soll ich die Sonderzeichen mit htmlentities() umwandeln? Die sind sowohl auf der Seite als auch in der Datenbank im original gespeichert und so sollte es auch eigentlich bleiben, sonst bin ich dauernd nur am hin und her wandeln wenn ich die wieder irgendwo auslesen will! ^^
//EDIT: str_replace funktioniert genauso, Titel mit Umlauten werden nicht ersetzt, der Rest schon!
Geändert von mad-boy (23.10.2004 um 21:12:21 Uhr)
|
23.10.2004, 21:40:21
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
Zitat:
Original geschrieben von mad-boy
Wozu soll ich die Sonderzeichen mit htmlentities() umwandeln?
|
Du solltest Sonderzeichen in den entsprechenden HTML-Code umwandeln, damit deine Seite auch von Leute betrachtet werden kann, die nicht unbedingt den gleichen Zeichensatz wie du nutzen: Zeichenvorrat, Sonderzeichen und HTML-eigene Zeichen
Zitat:
str_replace funktioniert genauso, Titel mit Umlauten werden nicht ersetzt, der Rest schon!
|
Dann zeig mal etwas mehr von deinem Script.
|
23.10.2004, 22:04:54
|
Junior Member
|
|
Registriert seit: Aug 2002
Beiträge: 395
|
|
Ich hab im HEAD Bereich aber den Zeichensatz drin stehen! ^^ Aber naja von mir aus jag ich noch nen HTML-Parser über die kompletten Inhalte! ^^
also das gesamte Script ist in meiner BBCode Funktion drin:
PHP-Code:
function bbcode($text) {
//HTML Tags entfernen
$text=str_replace("<","<",$text);
$text=str_replace(">",">",$text);
$text=nl2br($text); //Im restlichen Code <BR>'s einfügen
$query = "SELECT `name` FROM filme_index";
$query = mysql_query($query);
while($q = mysql_fetch_array($query)) {
$s_titel[]=strtoupper($q['name']);
$r_titel[]="<a href="/filme/".word2url($q['name'])."/">".strtoupper($q['name'])."</a>";
}
$text = str_replace($s_titel,$r_titel,$text);
//Suchstrings für restlichen Code:
$search[]="/[url](.*?)[/url]/si";
$search[]="/[url=(.*?)](.*?)[/url]/si";
$search[]="/[mail](.*?)[/mail]/si";
$search[]="/[mail=(.*?)](.*?)[/mail]/si";
$search[]="/[b](.*?)[/b]/si";
$search[]="/[u](.*?)[/u]/si";
$search[]="/[i](.*?)[/i]/si";
$search[]="/[img](.*?)[/img]/si";
//Replacestrings für restlichen Code:
$replace[]="<a href="1" target="_blank">1</a>";
$replace[]="<a href="1" target="_blank">2</a>";
$replace[]="<a href="mailto:1" target="_blank"><img src="/template/".$_SESSION['template']."/mail.gif" border=0>1</a>";
$replace[]="<a href="mailto:1" target="_blank"><img src="/template/".$_SESSION['template']."/mail.gif" border=0>2</a>";
$replace[]="<B>1</B>";
$replace[]="<U>1</U>";
$replace[]="<I>1</I>";
$replace[]="<img src="1" border=0>";
$text=preg_replace($search,$replace,$text); //Restlichen Code ersetzen
return $text;
}
Viel mehr gibts da auch nicht! Als Beispiel wie der Text dann geparst wird:
PHP-Code:
$select = "SELECT * FROM news WHERE `id`='".$_GET['id']."'";
$select = mysql_query($select);
$e = mysql_fetch_array($select);
$tpl->setVariable(array(
"headline"=>$e['headline'],
"text"=>bbcode($e['text']),
"datum"=>strftime("%d.%m.%Y",strtotime($e['datum'])),
"quelle"=>$e['quelle']
));
Es ist eben wirklich nicht viel an Script, deswegen versteh ich nicht was der da macht! Werden Umlaute beim auslesen aus einer MySQL Tabelle vielleicht irgendwie anders ausgelesen oder so?
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Hybrid-Darstellung
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 04:48:30 Uhr.
|