php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 29-10-2006, 15:37
KleinesOnlein29
 Newbie
Links : Onlinestatus : KleinesOnlein29 ist offline
Registriert seit: Jun 2006
Beiträge: 45
KleinesOnlein29 ist zur Zeit noch ein unbeschriebenes Blatt
Standard Prüfen, ob bei links auch target="blank" steht

Hallo!

Ich möchte in einer Html Datei alle links aufspüren und mir diese dann anzeigen lassen.
Zusätzlich muss ich überprüfen, ob sich diese (alle) Links auch in einem neuen Fenster offnen. Es muss also die Angabe target="_blank" vorhanden sein.
Hier erstmal das, was ich selbst schon hinbekommen habe:
PHP-Code:
//Einlesen der Datei
$lines file ("../ordner/datei.php");

// Nun nach den Links suchen
$pattern '%\<a.*href=("|\')([^\\1]*)\\1.*>(.*)\</a\>%siU';
$string implode($lines);
preg_match_all($pattern$string$trefferPREG_SET_ORDER);

// Alles ausgeben
print_r($treffer); 
Dann wird mir sowas ausgegeben:
[0] => Array
(
[0] => <a href="abc">def</a>
[1] => "
[2] => abc
[3] => def
)
Also unter anderem alles was zwischen den a Tags steht.
Jetzt muss ich nur noch rausfinden, ob das 'target="_blank" ' auch wirklich <a hier irgendwo ></a> steht.
Wenn es nicht vorhanden ist, muss es hinzugefügt werden, bzw. ein anderes target überschrieben werden.
Es muss absolut sicher gestellt werden, dass sich alle Links von dieser Seite nach dieser Prozedur im eigenen Fenster öffnen.
Wie bekomme ich das zuverlässig hin?

Mfg,
Stefan
Mit Zitat antworten
  #2 (permalink)  
Alt 30-10-2006, 00:05
BugBite
 Member
Links : Onlinestatus : BugBite ist offline
Registriert seit: May 2006
Beiträge: 299
BugBite ist zur Zeit noch ein unbeschriebenes Blatt
Standard

[0] => <a href="abc">def</a>

kannst ja in deinem ergebnis nochmal ein preg_match() anwenden..?!
Mit Zitat antworten
  #3 (permalink)  
Alt 30-10-2006, 01:11
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Warum nicht gleich $pattern so ändern, dass target=... in $treffer separat aufgeführt wird. Klammern um den Ausdruck, der target=... matchen soll und fertig.
Mit Zitat antworten
  #4 (permalink)  
Alt 30-10-2006, 20:30
KleinesOnlein29
 Newbie
Links : Onlinestatus : KleinesOnlein29 ist offline
Registriert seit: Jun 2006
Beiträge: 45
KleinesOnlein29 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Erstmal danke für die antworten!

Eine echt gute ide, das direkt in den Pattern einzubauen.
Jetzt versuche ich schon die ganze Zeit das irgendwie hinzukriegen.
Troz aller Tutorials komme ich einfach nicht zum richtigen ergebnis.
Eins von den folgenden erfordernissen fehlt immer.
1. Es muss matchen wenn sich 'Target=_blank" ' genau
<a xxxx href="xxxx" HIER xxxx ></a> befindet
oder <a xxxx href="xxxx" xxxx HIER ></a>
oder <a xxxx href="xxxx" xxxx HIER xxxx ></a>
oder <a xxxx HIER xxxx href="xxxx" xxxx ></a>
oder ....
An allen möglichen stellen ebend, aber schon im einleitenden a Tag also:
2. Es darf nicht matchen, wenn es <a xxxx >HIER</a> steht. Auf diese Art darf man das Script ebend nicht überlisten können. (wenn dort ein img ist, kann man es nämlich einbauen, ohne funktion)
3. Es darf dabei keine gross- und Kleinschreibung beachten. Also target = Target = TARGET ....
4. Ein leerzeichen target[HIER]=[HIER]"[HIER]_blank[HIER]" darf nichts ausmachen.
5. Das alles gilt natürlich auch für das href
6. gibt es beim a Tag auch sowas zu beachten? (<a = < a oder </a> = < / a > ...)
Wichtig ist halt, dass ALLE Links matchen, die auch der Browser als solchen versteht.

Es muss definitiv JEDER Link erkannt werden, und dann noch überprüft werden, ob auch das richtige target verwendet wurde. Hintergrund ist, dass nur bestimmte Links erlaubt sind, also links zu bestimmten Seiten. Und wenn die Seite stimmt, dann muss noch das richtige target vorhanden sein. Von daher wären 2 schleifen irgendwie doch besser, oder?
Also ich bin für jeden Tip dankbar, der mich auf den richtigen weg bringt, ich stehe gerade vor allem bei den Patterns voll auf dem Schlauch.

Mfg, Stefan
Mit Zitat antworten
  #5 (permalink)  
Alt 30-10-2006, 20:44
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

PHP-Code:
$reg '/<a href="([^"]*)".*target="_blank".*>/Uis'
Sollte Dir nur die hrefs matchen, welche über target="_blank" verfügen.

Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #6 (permalink)  
Alt 30-10-2006, 22:59
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

1.+2. "<a.+($target.+$href|$href.+$target).*>
3. Modifier!
4.+5. "Leerzeichen?" in Regex einbauen
6. Mußt erstmal herausfinden, welche Mißbildungen eines a-Tags überhaupt von mind. 1 Browser akzeptiert werden.
Mit Zitat antworten
  #7 (permalink)  
Alt 31-10-2006, 04:45
highrise
 Member
Links : Onlinestatus : highrise ist offline
Registriert seit: Apr 2006
Ort: zu Hause *g*
Beiträge: 257
highrise ist zur Zeit noch ein unbeschriebenes Blatt
Standard

noch andere idee...

und dazu auch noch aktuellem standard entsprechend, weil target depreciated..

match erstmal alles was target heißt, und schmeiß es raus.. (oder lass es drin, es ist gleich sowieso nicht mehr von bedeutung).

dann ersetzt du deine <a einfach durch
<a onclick="window.open(this.href); return false"

und fertig ist die laube..

standardkonform barrierefrei und definitiv korrekter code.. nicht so ein target gemurks aus vergangenen tagen..

greetz, high
__________________
Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
When everything else fails, manipulate the data...
Beschriftungen / Großformatdruck / Werbemittel
Mit Zitat antworten
  #8 (permalink)  
Alt 31-10-2006, 09:56
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
und dazu auch noch aktuellem standard entsprechend, weil target depreciated..
ja, bei den strict-varianten. ansonsten nicht.
Zitat:
standardkonform barrierefrei und definitiv korrekter code
PHP-Code:
<a onclick="window.open(this.href); return false" 
javascript ist nicht barrierefrei.

gruß
peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #9 (permalink)  
Alt 31-10-2006, 12:42
highrise
 Member
Links : Onlinestatus : highrise ist offline
Registriert seit: Apr 2006
Ort: zu Hause *g*
Beiträge: 257
highrise ist zur Zeit noch ein unbeschriebenes Blatt
Standard

In diesem Fall schon, weil das JavaScript nur einen Nebeneffekt erfüllt..

denn der Link funktioniert dennoch..

und das ist der Sinn wenn du dich auch mal in den Quellen im W3C umschaust.. derjenige, der JS aus hat (oder es nicht unterstützt) braucht sich auch nicht vorschreiben lassen, ob es ein neues Fenster geben soll..

insofern barrierefrei im Sinne der definition..

STRICT Varianten sind empfohlen.. und man kann alles damit tun, was man will... Transitiv ist ja sowieso nur ein Zugeständnis an die Kompatibilität zu alten Seiten.. XHTML1.1 Transitiv zum beispiel gibt es schon nicht mehr..

greetz, high
__________________
Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
When everything else fails, manipulate the data...
Beschriftungen / Großformatdruck / Werbemittel
Mit Zitat antworten
  #10 (permalink)  
Alt 31-10-2006, 12:47
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

Es ging ja wohl darum, sicherzustellen, dass sich die Links garantiert in einem neuen Fenster öffnen.
Das geht nicht nur mit JS, sondern das geht ausschließlich mit dem target-Attribut.

Schlimm ist das nicht, denn wenn es wirklich nötig ist (bevor jemand meckert: "Aus Gründen der Barrierefreiheit müssen wir Sie bitten, beim Benutzen des nun folgenden Verweise die [Shift]-Taste gedrückt zu halten" hat nicht wirklich viel mit Benutzerfreundlichkeit zu tun), kann einfach ein Doctype verwendet werden, der dieses Attribut erlaubt.

Wenn deine Definition vor Barrierefreiheit bedeutet, dass du Benutzern mit JS vorschreibst, ob Links in einem neuen Fenster aufgehen oder nicht, Benutzern ohne JS dies aber nicht vorschreibst, dann verstehe ich das nicht.

P.S. Transitiv ist nicht das gleiche wie transitional
__________________
Ich denke, also bin ich. - Einige sind trotzdem...

Geändert von mrhappiness (31-10-2006 um 12:50 Uhr)
Mit Zitat antworten
  #11 (permalink)  
Alt 31-10-2006, 12:50
highrise
 Member
Links : Onlinestatus : highrise ist offline
Registriert seit: Apr 2006
Ort: zu Hause *g*
Beiträge: 257
highrise ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das stimme ich dir zu..
allerdings gibt es ein "garantiert im neuen Fenster" im Web nunmal nicht..

wenn ich das nicht will, dann tut mein Browser das nicht, egal ob ein target angegeben ist, oder nicht. however..
das ist ja nicht das Thema..

greetz, high
__________________
Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
When everything else fails, manipulate the data...
Beschriftungen / Großformatdruck / Werbemittel
Mit Zitat antworten
  #12 (permalink)  
Alt 31-10-2006, 13:10
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von mrhappiness
Schlimm ist das nicht, denn wenn es wirklich nötig ist (bevor jemand meckert: "Aus Gründen der Barrierefreiheit müssen wir Sie bitten, beim Benutzen des nun folgenden Verweise die [Shift]-Taste gedrückt zu halten" hat nicht wirklich viel mit Benutzerfreundlichkeit zu tun), kann einfach ein Doctype verwendet werden, der dieses Attribut erlaubt.
Das target-Attribut ist doch nur ein komplettes Unding für die sowieso verkorkste Frameset-Spielerei.
Es sollte möglich sein eine komplette Surf-Sitzung mit EINEM Browserfenster zu machen. Wenn ich die Seite des nächsten Links in einem neuen Fenster haben will, drücke ich Shift oder die mittlere Maustaste.
Das ganze kann man, bzw. könnte man, auf Wunsch durch JS im Verhalten ändern, sollte dann aber als default aus und nur vom User aktivierbar sein.

meine Meinung zu dem Thema
Mit Zitat antworten
  #13 (permalink)  
Alt 31-10-2006, 13:38
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Es sollte möglich sein eine komplette Surf-Sitzung mit EINEM Browserfenster zu machen.
das hängt alles vom user ab. wer das nicht kennt, naja. kann mich noch gut an eine geschichte erinnern, die mir jemand mal während eines multimediatreffs in köln erzählte.

kunde wollte, dass pdfs in einem neuen fenster geöffnet werden. da randalierte die eine hälfte des vorstandes, weil man nicht mehr über den zurück-button zur seite kam. die hatten nicht begriffen, dass ein neues fenster geöffnet wurde.

also wurde alles umgestellt und target="_blank" entfernt. da randalierte dann die andere hälfte des vorstandes, weil die mit dieser lösung nicht klarkamen.

das ende vom lied. ein pdf mit zwei links inkl. hinweis in neuem fenster öffnen, bzw. im selben fenster öffnen. da waren dann alle glücklich.

gruß
peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #14 (permalink)  
Alt 31-10-2006, 20:31
KleinesOnlein29
 Newbie
Links : Onlinestatus : KleinesOnlein29 ist offline
Registriert seit: Jun 2006
Beiträge: 45
KleinesOnlein29 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Die entsprechenden Patterns habe ich dank den Tips nun hinbekommen. Vielen Dank nochmal!

Was ich der Diskusion über das target entnehmen kann, ist das dies die absolut sicherste Variante ist. (Oder habe ich das Falsch verstanden?). Denn die soll es sein, also liege ich mit dem Target richtig.

Es sollen ja absolut sicher ALLE Links, also alles was anklickbar ist, erfasst werden. Die naheliegenste variante ist das <a xxx >xxx</a> für einen Link. Nun habe ich aber noch einen weiteren Tag gefunden:
PHP-Code:
<map name="Map" id="Map">
    <
area shape="rect" coords="4,10,91,28" href="index.html" alt="Übersicht" target="_blank" />
</
map
Auch diese muss ich natürlich auffinden und überprüfen. Hier beschränkt sich ja die suche auf das <area xxx />.
Jetzt meine Frage: Gibt es noch irgendwelche andere Möglichkeiten Links in einer html Datei unterzubringen?
Wie sieht es mit JS aus? Nach welchen strings muss ich da suchen?

Mfg, Stefan
Mit Zitat antworten
  #15 (permalink)  
Alt 31-10-2006, 20:40
highrise
 Member
Links : Onlinestatus : highrise ist offline
Registriert seit: Apr 2006
Ort: zu Hause *g*
Beiträge: 257
highrise ist zur Zeit noch ein unbeschriebenes Blatt
Standard

wenn du die ganze JS Palette mit abdecken willst, dann gibt es nahezu unzählige Möglichkeiten, einen link irgendwie zu platzieren..

viele elemente dürfen ein onclick-Attribut besitzen, das man für links verwenden kann...
außerdem lässt sich auch über formulare verlinken mit dem submit-button, oder aber jedem beliebigen eingabe-oder auswahlfeld über andere event-handler (so zB onchange, onfocus onblur)
auch lässt sich mit JS dir URL des aktuellen dokuments ändern document.location.href='neueseite.htm' um nur einige wenige zu nennen... woher stammen denn die Originale?

Vielleicht kann man etwas einschränken, was gebräuchlich ist, und was nicht..

Was ist der Zweck dieser Anwendung ?

greetz, high

Anmerkung: die sicherste variante wäre eine kombination aus target und onclick, wenn du denn das unbedingt so machen möchtest...
also im ergebnis: <a href="wasauchimmer.htm" target="_blank" onclick="window.open(this.href); return false">text</a>
__________________
Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
When everything else fails, manipulate the data...
Beschriftungen / Großformatdruck / Werbemittel
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

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.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:42 Uhr.