Suche auf lima-city
-
in: MetaTag title auslesen
geschrieben von juwely
Hallo
ich habe eine kleine Funktion um aus einer Webseite den <title> TAG auszulesen
// --------------------------------------------- function get_meta_title($url, $len=1024) { $handle = fopen($url, 'r'); $content = fread($handle, $len); fclose($handle); if ( preg_match("/<title>(.+)<\/title>/siU", $content, $matches)) { $title = $matches[1]; } else { $title = ''; } return $title; } // ---------------------------------------------
damit nicht die komplette Datei gelesen werden muss, habe ich $len=1024
jetzt die Frage:
welcher Wert ist für $len sinnvoll, damit möglichst wenig ausgelesen wird,
aber (relativ) sicher ist, dass innerhalb dieser Größe der komplette <title> TAG enthalten ist ?!
oder ist es besser, die $url Zeilen-Weise auszulesen ... fgets() ...
und sobald die Zeile den <title> TAG enthält, dann das Auslesen "abbrechen" ?
// --------------------------------------------- function get_meta_title2($url, $len=1024) { $handle = fopen($url, 'r'); while (($buffer = fgets($handle, $len)) !== false) { if (strstr($buffer, '<title>')) { if ( preg_match("/<title>(.+)<\/title>/siU", $buffer, $matches)) { $title = $matches[1]; } else { $title = ''; } break; } } fclose($handle); return $title; } // ---------------------------------------------
wie ist es am schnellsten / besten ?
... oder gibt es noch andere (bessere) Methode zum <title> TAG auslesen ... dom ?
-
in: abraham twitteroauth curl_getinfo liefert kein Werte?
geschrieben von juwely
Hallo
ich will abraham twitteroauth verwenden
siehe ... https://github.com/abraham/twitteroauth/blob/master/twitteroauth/twitteroauth.php
una Abfragen funktionieren auch, ich bekomme Ergebnisse,
Aber die HEADER Information fehlt ... ?
also im TwitterOauth Object bleiben diese Elemente immer leer ???
$this->http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE); $this->http_info = array_merge($this->http_info, curl_getinfo($ci)); $this->url = $url;
bzw mit print_r Ausgabe des TwitterOAuth Object
TwitterOAuth Object ( [http_code] => [url] => [host] => https://api.twitter.com/1.1/ [timeout] => 30 [connecttimeout] => 30 [ssl_verifypeer] => [format] => json [decode_json] => 1 [http_info] => [useragent] => TwitterOAuth v0.2.0-beta2 // ... usw )
kein Status: http_code, keine url und keine sonstigen Header-Angaben (http_info) ??
also scheint hir curl_getinfo() nicht zu funktionieren ?!
... oder die function getHeader($ch, $header) ... ???
bei curl_setopt($ci, CURLOPT_HEADERFUNCTION, array($this, 'getHeader'));
werden ja auch gar keine Parameter angegeben die aber in getHeader() erwartet werden
... es kommt auch keine Fehlermeldung .. einfach keine (Header / curl_getinfo Daten)
.. Wenn ich aber eine andere (selbst gebaute) CURL Abfrage mache (ohne Klasse)
dann geht curl_getinfo() ohne Probleme .... warum NICHT in der class TwitterOAuth ()
jemand ne Idee, wie ich da auch an Daten aus curl_getinfo() komme ??
-
in: mySQL: wann wird int zu klein für Timestamp ?
geschrieben von juwely
ok, Datum als INT (timestamp) zu speichernt macht wenig Sinn, das sehe ich ein,
u.a. weil ... wenn man Geburtsdatum Speichern will, braucht man ja auch vor 1970
fatfreddy schrieb:
Wenn Du nicht dem Vorschlag von hackyourlife folgen magst, solltest Du dir, wenn ich mich nicht verrechnet habe, in ca.275(Natürlich hab ich mich verrechnet.) 94 Jahren Gedanken machen.
hmmm .. ich habe was gefunden .... Timstamp passit in int bis: UTC 2038-01-19 (03:14:07)
also wie kommst Du auf 94 Jahre ... sind eher noch 25 Jahre und ein paar Zerquetschte :)
ahhh ... ok ... kapiert .... gemeint ist dabei wahrscheinlich int mit Vorzeichen,
... bei int UNSIGNED ist es dann bis: 2106-02-07 (01:28:15) ... daher die 94
zum Datentyp TIMESTAMP
... TIMESTAMP has a range of '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC.
... also auch "nur" bis 2038
das bringt also gegenüber int nicht mehr, gegenüber int UNSIGED sogar weniger
aber mit Datentyp DATETIME
... DATETIME ... range is '1000-01-01 00:00:00' to '9999-12-31 23:59:59' UTC
... schon besser, auch vor 1970 und bis zum Jahr 9999
sehe ich das richtig, Datentyp TIMESTAMP (und DATETIME)
wird wie ein Datum-String gespeichert ? ... im Format:YYYY-MM-DD HH:MM:SS
... quasi wie ein VARCHAR (19), nur dass es "anders" ausgelesen werden kann
oder ist TIMESTAMP anders als DATETIME ... in der Doku sieht beides gleich aus
also wenn Datentyp DATETIME (oder TIMESTAMP) ist, dann geht sowas:
SELECT * FROM table where datum1 BETWEEN '2012-10-01 00-00-00' AND '2012-11-24 23:59:59'
was mit VARCHAR nicht gehen würde ?
und ... Frage zum Verständnis zu int in PHP und MySQL
bei Server 64 bit System ist PHP_INT_MAX = 9223372036854775807
aber in MySQL ist Maximum von int (SIGNED) = 2147483647 .. bzw: int (UNSIGED) = 4294967295
also ist int in MySQL immer "nur" 32bit int .... und bigint dann das 64bit int ???
... gibt es bei MySQL keinen Unterschied ob auf 32bit oder 64 bit Server ?
-
in: mySQL: wann wird int zu klein für Timestamp ?
geschrieben von juwely
Hallo
Der (Unix) Timestamp zählt ja die Sekunden seit 01.01.1970
zur Zeit ist er 10 Zeichen lang, z.B:1353753033
daher kann man den (noch) in MySQL Speichern mitint (10) UNSIGNED
Aber ab welchen Datum wird der (Unix) Timestamp zu "groß" für int ???
und sollte man jetzt schon Speichern von Timestamp in MySQL mit bigint() machen ?
Laut MySQL Doku: int() UNSIGNED max = 4294967295
.. ist das der Wert bei 32bit oder bei 64bit Server ?
Bei der Doku: http://dev.mysql.com/doc/refman/5.5/en/numeric-types.html steht keine Hinweis dazu ?!
ab wann (welches Datum) ist int() UNSIGNED zu "klein" für einen (Unix) Timestamp ? (bei 64 bit)
und sollte man den lieber gleich als bigint() Speichern? .. wieviele max. Stellen hat bigint() UNSIGNED ?
PS: wenn der Server (http) auf 64 bit läuft, ist dann MySQL automatich auch 64bit ?
bzw. wie bekomme ich heraus, ob der MySQL Server auf 64bit läuft ?
und .... wie kann ich in PHP (nicht in MySQL) eine (int)$variable auf UNSIGNED setzen ?
-
in: variblen vergleichen ohne Groß/kleinschrift
geschrieben von juwely
also erstmal, nur zur Erklärung
mit dem strtolower() innerhalb der if-Bedingung wird die Variable nicht wirklich geändert / umgewandelt, sondern nur temporär innerhalb der if-Bedingung zum Vergleichen,
danach ist die Groß/Klein-Schreibung noch vorhanden.
$name1 = 'Peter'; $name2 = 'peter'; if ( strtolower($name1) == strtolower($name2) ) { print "<p>Die Namen sind gleich.</p>\n"; } // danach ist $name1 immernoch = 'Peter' also mit Großbuchstaben
zu trim() ... Beispiel:
$kw_name = $_POST['kw_name']; $kw_name = trim($kw_name); $kw_name = mysql_real_escape_string($kw_name);
oder wie @hackyourlife schreibt, gleich in einer Zeile kombinieren :)
Wenn es ein mehrzeiliges Eingabe-Feld ist (textarea)
kann man mit chop() auch Zeilenumbruch am Ende entfernen
$text = $_POST['eingabe_text']; $text = chop($text); $text = trim($text); $text = mysql_real_escape_string($text);
oder direkt die Steuer-Zeichen entfernen, bzw. duch Leerzeichen ersetzen
damit auch innerhalb im Text kein Umbruch ist
$text = str_replace("\r",' ',$text); // --- Zeilenvorschub $text = str_replace("\n",' ',$text); // --- Zeilenumbruch $text = str_replace("\t",' ',$text); // --- Tabulator / Einrückung
Noch ein Tip: ... mehrere Leerzeichen zu einem Leerzeichen machen
wenn Du die Steuerzeichen zu Leerzeichen ersetzt hast oder
wenn Eingabe zB. ist:
dann soll daraus werden:Peter Lustig
Peter Lustig
$name = preg_replace('/ {2,}/', ' ', $name);
und danach noch einzelne Leerzeichen am Anfang oder Ende entfernen mit
$name = trim($name);
und wenn wir schon dabei sind ...
Du kannst auch generell alle Sonderzeichen ausschließen,
und nur Buchstaben und Zahlen im String übrig lassen
$text = preg_replace("/[^0-9a-zA-Z äöüÄÖÜß]/","",$text);
damit bleiben nur nur 0-9 und a-z und A-Z und "Leerzeichen" und äöüÄÖÜß übrig
... bei den Sonderzeichen (äöüÄÖÜß) musst Du evtl aufpassen ob UTF-8 oder ISO
-
in: variblen vergleichen ohne Groß/kleinschrift
geschrieben von juwely
ja, das ist klar
aber wird nicht über Setzen der Werte für locale auch das (Tastaturlayout) festgelegt ?!
mit
ist das $ (Dollar-Zeichen) auf SHIFT+2setlocale(LC_ALL, "en_US");
mit
ist das $ (Dollar-Zeichen) auf SHIFT+4setlocale(LC_ALL, "de_DE");
ok, das ist jetzt hier vielleicht schon off-topic, aber nochmal die Frage: wie ist definiert, welche Zeichen bei strtolower() bzw. strtoupper() geändert werden und welche nicht ?
bzw. welche Zeichen in strcasecmp() verglichen werden (und welche nicht) ?
-
in: HTML Farbgenerator gesucht!
geschrieben von juwely
dann erklär mal bitte, was genau du suchst,
was meinst du mit HTML Farbgenerator ?
Meinst Du vielleicht einen Color-Picker, bei dem der User eine Farbe per Klick auswählen kann
welche dann für weitere Zwecke (Formular-Übergabe) verwendet wird ?
wenn ja... dann such mal
... nach "jQuery color picker" ... BSP: http://www.digitalmagicpro.com/jPicker/ oder mind. 10 andere
... oder "JS color picker" ... BSP: http://jscolor.com/try.php
ansonsten, wenn für eigene Zwecke, dann kann ich noch empfehlen:
http://www.w3schools.com/tags/ref_colorpicker.asp
http://www.w3schools.com/tags/ref_colormixer.asp
http://www.w3schools.com/tags/ref_colornames.asp
-
in: variblen vergleichen ohne Groß/kleinschrift
geschrieben von juwely
Eine Alternative wäre wohl auch ... beide mit strtolower()
if ( strtolower($name_vali) == strtolower($name_wertetabelle) ) { }
bzw. andersrum ... beide mit strtoupper()
if ( strtoupper($name_vali) == strtoupper($name_wertetabelle) ) { }
aber .... strcasecmp() ist wahrscheinlisch die "schönere" Methode
denn bei den anderen beiden vom vom Wert locale abhängig ist
was bei Umlauten (Ä, Ö, Ü, ä, ö ,ü) mit passendem locale geht
obwohl .. bei strcasecmp() steht in Kommentare auch: "... be sure to use the correct locale"
also auch da wohl aufpassen mit locale Settings und Umlauten
Was ist mit Zahlen / Sonderzeichen die auf der gleichen Taste (mit Shift) liegen ?
... als Bsp
und3
....... oder§
und+
.... etc. ?*
-
in: Wikipedia API: opensearch ... limit ?
geschrieben von juwely
och nee, da muss man sich ja anmelden und auch noch um Freigabe betteln ...
Wikipedia opensearch hat sowieso komische Ergebnise ....
es kommt z.B. mit dem Suchwort: 'bier' das Ergebnis: "Couleur" ??? :(
BSP: opensearch "bier" XML
<Item> <Image source="http://upload.wikimedia.org/wikipedia/commons/thumb/d/d1/M%C3%BChlberg_-_Zum_ersten_Mal_in_Wichs.jpg/32px-M%C3%BChlberg_-_Zum_ersten_Mal_in_Wichs.jpg" width="32" height="50"/> <Text xml:space="preserve">Couleur</Text> <Description xml:space="preserve">Couleur (franz. „Farbe“) ist die Bezeichnung für die Gesamtheit aller Kleidungs- und Schmuckstücke sowie aller Accessoires und Gebrauchsgegenstände, auf denen oder mit denen die Mitglieder farbentragender bzw. </Description> <Url xml:space="preserve">http://de.wikipedia.org/wiki/Couleur#Zipfel_und_Zipfelbund</Url> </Item>
im Gesamten Wikipedia-Artikel "Couleur" existiert nicht einmal das Wort "bier" ... :(
.. ein Zusammenhang Suchanfrage <---> Ergebnis ist nicht zu erkennen
bei JSON ist das Ergbnis nicht dabei ??? opensearch "bier" JSON (fm)
.. verschiedene Ergebnisse durch anderes Format (xml / json) ?? ...
möep !!! ... unbrauchbar ?
PS:
ich will eigenlich zum Such-Begriff möglichst viele passende Worte (Synonyme, etc) finden,
aber ... "Couleur" zur Suche: "Bier" ist ja vollkommener blödsinn ...
schön wäre (for "bier") Ergebnisse wie: Bierfaß, Bierflasche, Weizenbier, ...
und ebenso Worte, die zum Thema "passen" aber nicht das Teil-Wort "bier" enthalten.
wie z.B.: Brauerei, Pils, Hopfen, etc ...
kann mir jemand noch andere Bezugsquellen für sowas sagen (die man per PHP auslesen kann) ?
... außer: openthesaurus, das kenne ich schon.
Danke!
-
in: Wikipedia API: opensearch ... limit ?
geschrieben von juwely
Hallo
wie kann ich für Wikipedia API opensearch das limit (Anzahl Ergebnisse) erhöhen ?
ich bekomme immer nur max. 15 Ergebnisse ??
BSP: http://de.wikipedia.org/w/api.php?action=opensearch&search=bier&limit=100&format=jsonfm
in der HELP (mini-Doku) zu action=opensearch steht was von maximal 100 (für bots)
Parameters:
...
limit - Maximum amount of results to return
No more than 100 (100 for bots) allowed
Default: 10
...
aber wie sage ich der Wikipedia API, das mein PHP-Script als "bot" daher kommt ?
Die Daten lese ich so ein:
<?php // ------------------------------------------------------------------------ $url = 'http://de.wikipedia.org/w/api.php?action=opensearch&search=bier&limit=100&format=xml'; $ch = curl_init ($url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_BINARYTRANSFER,1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2); curl_setopt($ch, CURLOPT_TIMEOUT, 15); ## curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100101 Firefox/16.0"); // --- User-Agent als Bot aus Beispiel von: https://www.mediawiki.org/wiki/API curl_setopt($ch, CURLOPT_USERAGENT, 'User-Agent: MyCoolTool/1.1 (http://example.com/MyCoolTool/; MyCoolTool@example.com)'); $rawdata = curl_exec($ch); curl_close ($ch); // ------------------------------------------------------------------------ $xmlobject = simplexml_load_string($rawdata); // ------------------------------------------------------------------------ #### DEBUG AUSGABE #### print "<pre>\n"; print_r($xmlobject); print "</pre>\n"; // ------------------------------------------------------------------------ ?>
das funktioniert auch .... aber immer nur mit max. 15 Ergebnisse
... wie muss HEADER und USERAGENT (und ...?... ) aussehen,
damit ich auch an die 100 möglichen Ergebnisse dran komme ?