kostenloser Webspace werbefrei: lima-city


Suche auf lima-city

  • in: Anführungszeichen aus img alt entfernen

    geschrieben von opsuche

    Hallo

    habe jetzt eine Funktion zum reparieren der Alt-Werte im IMG Tag gebaut:

    ... auch für den Fall, das hinten noch border="0" mit im IMG Tag steht.


    BSP:

    <?php 
    // --------------------------------------------------------------------
    
    header("Content-Type: text/html; charset=utf-8");
    mb_internal_encoding("UTF-8"); 
    
    
    // -------------------------------------------------------- 
    
    function repair_alt_value($htmlstring) { 
    	
    	$alt_pattern = '/alt="(.*?)"+?\s?\/?>/uis'; 
    	preg_match($alt_pattern, $htmlstring, $result);
    	$alt_value1 = $alt_value2 = $result[1]; 
    	
    	$px = mb_strpos($alt_value1, 'border='); 
    	if (FALSE !== $px) { $alt_value2 = trim(mb_substr($alt_value1, 0, $px)); } 
    	
    	$alt_value2 = str_replace('"','',$alt_value2); 
    	
    	return array($alt_value1,$alt_value2); 
    
    }
    
    // -------------------------------------------------------- 
    
    
    ###### test 1 ######
    
    $html_org = 'Bla bla <img src="xyz" alt="Mein "Hut" der hätte "fünf" Ecken" border="0" /> blabla';
    $html_org = utf8_encode($html_org); 
    
    $altstrdx = repair_alt_value($html_org); 
    $html_new = str_replace( $altstrdx[0], $altstrdx[1], $html_org ); 
    $alt_value = $altstrdx[1]; 
    
    print '<br /> OLD: '. htmlentities($html_org) .''."\n"; 
    print '<br /> NEW: '. htmlentities($html_new) .''."\n"; 
    print '<br /> ALT: <u>'. $alt_value .'</u>'."\n"; 
    print '<br /> &nbsp;'."\n"; 
    
    // -------------------------------------------------------- 
    
    
    ###### test 2 ######
    
    $html_org2 = 'Bla bla <img src="abc" alt="Meine "Nase" die hätte "zwölf" Ecken"> blabla';
    $html_org2 = utf8_encode($html_org2); 
    
    $altstrdx2 = repair_alt_value($html_org2); 
    $html_new2 = str_replace( $altstrdx2[0], $altstrdx2[1], $html_org2 ); 
    $alt_value2 = $altstrdx2[1]; 
    
    print '<br /> OLD: '. htmlentities($html_org2) .''."\n"; 
    print '<br /> NEW: '. htmlentities($html_new2) .''."\n"; 
    print '<br /> ALT: <u>'. $alt_value2 .'</u>'."\n"; 
    print '<br /> &nbsp;'."\n"; 
    
    
    // -------------------------------------------------------- 
    
    
    // -------------------------------------------------------------------- 
    ?>



    Ausgabe:

    OLD: Bla bla <img src="xyz" alt="Mein "Hut" der hätte "fünf" Ecken" border="0" /> blabla
    NEW: Bla bla <img src="xyz" alt="Mein Hut der hätte fünf Ecken" /> blabla
    ALT: Mein Hut der hätte fünf Ecken
     
    OLD: Bla bla <img src="abc" alt="Meine "Nase" die hätte "zwölf" Ecken"> blabla
    NEW: Bla bla <img src="abc" alt="Meine Nase die hätte zwölf Ecken"> blabla
    ALT: Meine Nase die hätte zwölf Ecken


    funktioniert, aber nur wenn img TAG nach dem alt Attribut
    nur noch
    />
    oder
    border="0" />
    endet
    wenn aber andere Attribute auf alt folgen (title="" oder andere) dann ... FAIL

    edit: jetzt auch egal ob
    />
    oder
    >
    am Ende
    durch das letzte Fragezeichen hier:
    '/alt="(.*?)"+?\s?\/?>/uis'


    :=)

    PS: ... wie BLÖD muss man sein, dass man in seinem RSS-Feed
    bei <content:encoded> einen falschen / fehlerhaften HTML Code im IMG liefert.
    sogar Anfänger wissen, wie wichtig Anführungszeichen in HTML-Tags sind,
    und die Tagesschau RSS ist ja kein Neuling ... das denen so was passiert ... Lach

    :P

  • in: Anführungszeichen aus img alt entfernen

    geschrieben von opsuche

    Danke,

    ... erstmal brauche ich ja den alt-String inklusive der Anführungszeichen
    habs jetzt mal so, aber damit bekomme ich "nur" den alt Wert (ohne src)

    $html = 'Bla bla <img src="xyz" alt="Mein "Hut" der hat "drei" Ecken" /> blabla';
    
    $alt_pattern = '/alt="(.*?)"+?\s?\/>/uis'; 
    
    preg_match($alt_pattern, $html, $result2);
    
    $alt_value1 = $result2[1]; 
    
    $alt_value2 = str_replace('"','',$alt_value1); 
    
    print '</p>'.$alt_value1.'</p>'."\n"; // Mein "Hut" der hat "drei" Ecken
    print '</p>'.$alt_value2.'</p>'."\n"; // Mein Hut der hat drei Ecken


    ... das könnte so für meine Zwecke funktionieren .. oO


    aber ... Problem noch, wenn img TAG hinten mehr enthält wie z.B.:
    .... hat "drei" Ecken" border="0" />

    dann ist auch
    border="0"
    mit im Treffer



    das mit Lockaheads verstehe ich noch nicht ganz
    ich kann zwar damit in dem alt-text den "Text" in Anführungszeichen finden
    aber wie bekomme ich damit die überflüssigen Anführungszeichen los ?!

    ... BSP (mein Versuch)

    $lookahead = '"(?<=")(.*?)(?=")"'; 
    preg_match_all('/'.$lookahead.'/uis', $alt_value, $result3);


    $result3 Ergebnis:
    Array
    (
        [0] => Array
            (
                [0] => "Hut"
                [1] => "drei"
            )
    
        [1] => Array
            (
                [0] => Hut
                [1] => drei
            )
    
    )


    bekomme damit zwar die Treffer für die Worte in Anführungszeichen im alt-Text
    aber dann ... bzw. was bringt mir das ?
  • in: Anführungszeichen aus img alt entfernen

    geschrieben von opsuche

    Hallo

    .... ich will den alt Text aus den IMG Tags der Tagesschau RSS auslesen
    .
    dabei habe img TAGs mit falschem alt Attributen (in content:encoded)
    innerhalb des alt="...." Attributes steht Text mit weitern Anführungszeichen.

    BSP:
    $html = '<img src="xyz" alt="Mein "Hut" der hat drei Ecken" />';


    BSP:
    // --------------------------------------------------------------------
    
    $html = '<img src="xyz" alt="Mein "Hut" der hat drei Ecken" />';
    
    preg_match_all('/(src|alt)=["\'](.*?)["\']/uis', $html, $result, PREG_SET_ORDER);
    
    // --------------------------------------------------------------------
    
    print '<pre style="margin:16px 4px; padding:4px; text-align:left; background:#DEDEDE;">'."\n"; 
    print_r($result); 
    print '</pre>'."\n"; 
    
    print '<br />'."\n"; 
    print '<br />'."\n"; 
    
    // --------------------------------------------------------------------


    dadurch kommt beim Auslesen der Attribute ein "falsches" $result Ergebnis:


    Array
    (
        [0] => Array
            (
                [0] => src="xyz"
                [1] => src
                [2] => xyz
            )
    
        [1] => Array
            (
                [0] => alt="Mein "
                [1] => alt
                [2] => Mein 
            )
    
    )



    ich muss also die Anführungszeichen innnerhalb des alt-Text weg-bekommen / entfenen.


    Idee:dazu .... mit einem preg_replace()
    .... alle " aus dem Text zwischen
    alt="
    und
    " />
    entfernen.

    FRAGE: ..... Wie muss der Pattern für das preg_replace aussehen?
    ... oder andere Lösungs-Ideen ????

    Danke.

    ... und nein, ... ich kann den Code nicht schon bei Erstellung verändern
    ich bekomme solche "faschen" alt Werte duch Auslesen einer XML / RSS

    die Quelle des Fehlers ist die Tagesschau RSS:http://www.tagesschau.de/xml/rss2
    dort sind solche übelst falschen alt Attribute in den img TAGs von content:encoded

    hier ein Beispiel, was die Tagesschau RSS iefert ...
    ... beachte den <img> TAG in content:encoded

    <item>
      <title>"Pegida - in Teilen offen rechtsradikal"</title>
      <link>http://www.tagesschau.de/inland/pegida-dresden-127.html</link>
      <pubDate>Tue, 20 Oct 2015 12:34:19 +0200</pubDate>
      <content:encoded><![CDATA[
        <p>
        <a href="http://www.tagesschau.de/inland/pegida-dresden-127.html"><img src="http://www.tagesschau.de/multimedia/bilder/pegida-363~_v-mittel16x9.jpg" alt=""Pegida"-Aufmarsch in Dresden | Bildquelle: REUTERS"/></a>
        <br/><br/>
        Die Zeit der Gespräche mit "besorgten Bürgern" ist vorbei: Inzwischen stuft die Bundesregierung die "Pegida"-Bewegung als "in Teilen offen rechtsradikal" ein. Politiker aller Parteien warnen vor weiterer Hetze, ein "Pegida"-Redner wurde zudem angezeigt. Die Staatsanwaltschaft ermittelt. [<a href="http://www.tagesschau.de/inland/pegida-dresden-127.html">mehr</a>]
        </p>
        <p>
        <ul>
        <li>
        <a href="http://www.tagesschau.de/inland/pegida-dresden-119.html">Dresden zwischen Herz und "Pegida", 19.10.2015</a>
        </li>
        <li>
        <a href="http://www.tagesschau.de/inland/pegida-verfassungsschutz-101.html">Innenministerium hält ''Pegida''-Verbot für unmöglich, 19.10.2015</a>
        </li>
        <li>
        <a href="http://www.tagesschau.de/multimedia/video/video-125747.html">Video: Reaktionen auf "Pegida"-Aufmarsch</a>
        </li>
        </ul>
        </p>
        <p><a href="http://www.tagesschau.de/inland/pegida-dresden-127.html">Meldung bei www.tagesschau.de lesen</a></p>
      ]]></content:encoded>
    
      <description>Die Zeit der Gespräche mit "besorgten Bürgern" ist vorbei: Inzwischen stuft die Bundesregierung die "Pegida"-Bewegung als "in Teilen offen rechtsradikal" ein. Politiker aller Parteien warnen vor weiterer Hetze, ein "Pegida"-Redner wurde zudem angezeigt. Die Staatsanwaltschaft ermittelt.</description>
      <guid>http://www.tagesschau.de/inland/pegida-dresden-127.html</guid>
    
    </item>


    also muss ich den Quellcode vor der weiter-Verarbeitung zerst "reparieren"
    dazu suche ich jetzt einen RegEx Pattern der das kann (siehe oben) ... oder andere Lösung

  • in: PHP Bild Upload Script

    geschrieben von opsuche

    Wo kommt das $_POST['file'] her .... sollte wohl $_POST['url'] sein ?!

    hier mal Beispiel mit nur bestimmte Datei-Endungen erlaubt

    if(isset($_POST['url'])) {
    
    $quelldatei = $_POST['url']; 
    // --- hier noch prüfen ob Datei zur URL existiert 
    
    $contents = file_get_contents($quelldatei);
    // --- hier noch prüfen ob Datei Inhalt bösen Code enthält 
    
    $allowedExts = array("gif", "jpeg", "jpg", "png");
    
    $extension = end(explode(".", $quelldatei));
    
    if ( in_array($extension, $allowedExts) ) { 
    
    $savename = md5($quelldatei) . rand(1,9999999); 
    
    $savefile = fopen("up/".$savename.".".$extension."", "w", 0666);
    fwrite($savefile, $contents);
    fclose($savefile);
    
    }


    alternativ ... einfach mit copy() die Datei kopieren ... wenn der Server das erlaubt
    copy($quelldatei , "up/".$savename.".".$extension);

    ... aber ich würde den Inhalt der Datei immer vor Speichern noch prüfen,
    denn auch innerhalb einer Bild-Datei kann "böser" Code (hack) stehen

  • in: header redirect mit Parameter in URL

    geschrieben von opsuche

    NEIN ... nicht ganz :oO

    @tee in Deinem Code ist in header("...") mit "doppeltem Anführungszeichen"
    aber dann escapest DU die Parameter doch wieder mit 'einfachen Anführungszeichen'

    also entweder so: (... nur 'einfache Anführungszeichen' )
    header('Location: http://www.tld.de/index.php?bla='.$param1.'&foo='.$param2.'');


    oder so: (... nur "doppelte Anführungszeichen" )
    header("Location: http://www.tld.de/index.php?bla=".$param1."&foo=".$param2."");


    EDIT:
    bzw. bei doppelte Anführungszeichen könnte auch das funktionieren:
    header("Location: http://www.tld.de/index.php?bla=$param1&foo=$param2");



    aber nicht
    "
    und
    '
    gemischt :) ... oder ?! ... zumindest kommt sonst bei mir leere Seite (Fehler)

    Die $url für header("Location: ....") baue ich halt vorher zusammen ... richtig escaped ;)
    und setzte diese dann für den Aufruf so ein:
    header ('Location: '.$url.'');


    Aber kann man (muss man) nicht auch einen Redirect-Status angeben (ähnlich wie bei Mod-Rewrite)
    ... wenn ja, wie ? ... 301 oder anderen Wert ?

  • in: header redirect mit Parameter in URL

    geschrieben von opsuche

    ok, Danke,
    also redirect URL nur mit
    &
    und nicht mit
    &amp;


    dannmache ich für die URL einfach vorher

    $url = str_replace('&amp;','&',$url); 
    header ('Location: '.$url.'');


    und ...
    (wie) macht man hei header() dann auch noch ein R=301 oder sowas mit dazu ?

    Die URL ist ja durch die Parameter quasi "dynamisch"
    aber die Weiterleitung soll doch Permanent sein, oder ?

  • in: header redirect mit Parameter in URL

    geschrieben von opsuche

    Hallo

    ich möchte per header('Location: ....") auf eine Seite umleiten,
    aber die URL zur Umleitung enthält einige Parameter.

    muss ich jetzt die URL Parameter (wie bei XHTML) mit &amp; anhängen, oder nur mit &

    so:
    header ('Location: seite.php?id=123&amp;name=Hans+Dampf&amp;info=blablabla');

    oder so:
    header ('Location: seite.php?id=123&name=Hans+Dampf&info=blablabla');


    die Werte je Parameter mit urlencode() ist klar,
    aber Übergabe ab dem 2ten GET Parameter ... mit &amp; oder mit & ... ?

  • in: MySQL: maximale (string) Länge (Zeichen/Byte) in VARCHAR ?

    geschrieben von opsuche

    Hallo

    ist die maximale (erlaubte) Länge eines HTTP_USER_AGENT String größer als 255 Zeichen?

    ich habe sowas gefunden:

    Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; InfoPath.2; .NET CLR 3.0.04506.648; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)


    das ist mit strlen() eine Länge von 257 Zeichen ....

    heisst das, wenn ich einen User-Agent in MySQL speichern will,
    dass dann VARCHAR (255) garnicht ausreichend ist ... ?!? soll ich dann TEXT nehmen, oder was ?

    Was passiert, wenn ich diesen (257 Zeichen langen) String (in utf8) mit VARCHAR (255) speichere

    ... bezieht sich das "255" in VARCHAR (255) auf die Anzahl der Zeichen oder auf Bytes ??
    ... gilt das auch bei UTF8 ... weil da ja manche Zeichen aus bis zu 3 character bestehen ?!

Login zum Webhosting ohne Werbung!