Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

RegEx - metas überprüfen

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
chrizz
PostRank 10
PostRank 10
Beiträge: 3044
Registriert: 05.07.2006, 10:37
Wohnort: Berlin

Beitrag von chrizz » 29.02.2008, 08:20

ich sitze derzeit an einem regulären Ausdruck und komm nicht wirklich weiter.
Ich will einen String auf die Existenz von dem MetaTag "nofollow" überprüfen.
So siehts bisher aus:
/(<meta name=\"robots\" content=\")_______________(\"\>)/i

Ich habe nur leider keine Ahnung, wie der Mittelteil (___) auszusehen hat.
Thepreisch ist ja dort jeder Buchstabe und "," erlaubt.
Also müsste von der Idee her: (a-zA-Z\,)+ AUSSER (nofollow) richtig sein.

Aber wie schreib ich das als RegEx?

Ein paar Tips wären net schlecht... :)

Anzeige von ABAKUS

von Anzeige von ABAKUS »

Content Erstellung von ABAKUS Internet Marketing
Ihre Vorteile:
  • einzigartige Texte
  • suchmaschinenoptimierte Inhalte
  • eine sinnvolle Content-Strategie
  • Beratung und Umsetzung
Jetzt anfragen: 0511 / 300325-0

chrizz
PostRank 10
PostRank 10
Beiträge: 3044
Registriert: 05.07.2006, 10:37
Wohnort: Berlin

Beitrag von chrizz » 01.03.2008, 16:33

niemand ne Idee? So aussergewöhnlich kann das Ding doch gar nicht sein, oder?

Hasenhuf
PostRank 9
PostRank 9
Beiträge: 2840
Registriert: 26.12.2005, 22:22

Beitrag von Hasenhuf » 01.03.2008, 23:54

chrizz hat geschrieben:Also müsste von der Idee her: (a-zA-Z\,)+ AUSSER (nofollow) richtig sein.
a) Soll nun nofollow drin stehen oder nicht?
b) Strings "negieren" geht nicht.


chrizz hat geschrieben:Ich will einen String auf die Existenz von dem MetaTag "nofollow" überprüfen.
So siehts bisher aus:
/(<meta name="robots" content=")_______________("\>)/i
So in etwa?
'/<meta name="robots" content=".*?nofollow.*?">/i'
Falls Du auch nach <meta name="robots" content="noindex, nofollow, no archiv"> oder ähnlichem suchen willst. Falls Du die >\< vor den >"< tatsächlich brauchst ... einfügen.

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


CIX88
PostRank 3
PostRank 3
Beiträge: 90
Registriert: 11.05.2007, 11:45

Beitrag von CIX88 » 02.03.2008, 00:03

Hasenhuf hat geschrieben: b) Strings "negieren" geht nicht.
Schau dir „negative look-ahead” und „negative look-behind” mal näher an, damit kann man einiges machen.

chrizz
PostRank 10
PostRank 10
Beiträge: 3044
Registriert: 05.07.2006, 10:37
Wohnort: Berlin

Beitrag von chrizz » 02.03.2008, 13:38

danke erstmal für die Anregungen. Da gibts doch einiges zu finden.

Ziel der RegEx soll sein, den Meta-Tag Robots überprüfen, ob ein nofollow drin vorkommt. Alles andere (also noindex, index, noarchive, archive, follow) soll erlaubt sein. Es darf halt nur kein nofollow drin vorkommen....


EDIT:
ich habs jetzt mit 2 preg_match gelöst. Das sieht mir wesentlich einfacher aus, als das eine verschachtelte...^^
So siehts jetzt aus:

Code: Alles auswählen

   if &#40;preg_match&#40;"/&#40;<meta name=\"robots\" content=\"&#41;&#40;.*&#41;?&#40;\"\>&#41;/i", $datei, $results&#41;&#41; &#123;
     if &#40;preg_match&#40;"/nofollow/", $results&#91;2&#93;&#41;&#41; &#123;


Hasenhuf
PostRank 9
PostRank 9
Beiträge: 2840
Registriert: 26.12.2005, 22:22

Beitrag von Hasenhuf » 02.03.2008, 15:04

CIX88 hat geschrieben:Schau dir „negative look-ahead” und „negative look-behind” mal näher an, damit kann man einiges machen.
Ich bin neulich mal auf ähnliche Konstrukte gestoßen, konnte nur nichts damit anfangen. Bisher hatte ich immer die Aussage gefunden, man könnte nur in Klassen negieren aber keine Zeichenketten.

@ chrizz, mir ist zwar nicht klar warum Du nicht

Code: Alles auswählen

if &#40;preg_match&#40;"/<meta name="robots" content=".*?nofollow.*?"\>/i", $datei, $results&#41;&#41; &#123;
  echo 'nofollow vorhanden'; //oder !preg_match ohne else statt preg_match mit else
&#125; elles &#123;
  echo 'nofollow nicht vorhanden';
&#125;
nimmst aber wenn Du deins nimmst, um nach 'nofollow' zu suchen reicht ein stristr im zweiten if.

chrizz
PostRank 10
PostRank 10
Beiträge: 3044
Registriert: 05.07.2006, 10:37
Wohnort: Berlin

Beitrag von chrizz » 02.03.2008, 20:31

@hasenhuf: danke für das Teil... habs vorhin bei dir im Posting übersehen...
klappt wunderbar!

mit RegEx muss ich mich echt nochmal irgendwann anfreunden...^^

CIX88
PostRank 3
PostRank 3
Beiträge: 90
Registriert: 11.05.2007, 11:45

Beitrag von CIX88 » 02.03.2008, 21:35

> Es darf halt nur kein nofollow drin vorkommen
Da könnte man vielleicht auch ohne Regex auskommen, z.B. mit stristr() oder strpos() etc...., das wäre dann etwas schneller als preg_match(). Das kann auch soweit erweitert werden, dass man nur den Header der Datei durchsucht, und nicht die ganze Datei. Vielleicht eine Überlegung wert.

Hasenhuf
PostRank 9
PostRank 9
Beiträge: 2840
Registriert: 26.12.2005, 22:22

Beitrag von Hasenhuf » 03.03.2008, 22:18

chrizz hat geschrieben:mit RegEx muss ich mich echt nochmal irgendwann anfreunden...^^
Mach eins nach dem anderen. Schau Dir die Bedeutung/Wirkung der Methazeichen an (die runden Klammern z.B. habe ich lange Zeit nicht gebraucht), Klassen, Quantoren und gieriges Verhalten, das reicht schon für sehr viel und mit der Zeit lernt man dazu.

Edit: Überall wo ich hier von Klassen fasle, meine ich die Zeichenauswahlen mit []. Vordefinierten Zeichenklassen sind aber auch einen Blick wert und nicht weiter kompliziert.

Outman
PostRank 6
PostRank 6
Beiträge: 394
Registriert: 03.12.2004, 22:55
Wohnort: Orlamünde

Beitrag von Outman » 03.03.2008, 23:15

Hallo,

ich würde es so machen.

Code: Alles auswählen

<?
$doc='Meta Daten';
if&#40;preg_match&#40;"/&#40;<meta &#91;^>&#93;*name=\"robots\"&#91;^>&#93;*>&#41;/is", $doc, $treffer&#41;&#41;&#123;
	if&#40;preg_match&#40;"/nofollow/i", $treffer&#91;1&#93;&#41;&#41;&#123;
		echo 'nofollow in meta tags gefunden!';
	&#125;
&#125;
?>
mfg. Nico
Webhosting Partnerprogramm mit 2 Refebenen, PHP Webspace mit .de Domain ab 2 Euro, Zusätzlich suche ich Linkpartner zum Thema "Webmaster". Suchst du einem PHP Programmierer?

Hasenhuf
PostRank 9
PostRank 9
Beiträge: 2840
Registriert: 26.12.2005, 22:22

Beitrag von Hasenhuf » 04.03.2008, 18:45

Naja, aber der Modifier "s" hinter dem "i" ist wirklich angebracht oder schreibt wer mehrzeilige metatags?
Bedeutung: https://www.devmag.net/webprog/regulaere_ausdruecke.htm

Outman
PostRank 6
PostRank 6
Beiträge: 394
Registriert: 03.12.2004, 22:55
Wohnort: Orlamünde

Beitrag von Outman » 04.03.2008, 19:01

Hasenhuf hat geschrieben:Naja, aber der Modifier "s" hinter dem "i" ist wirklich angebracht oder schreibt wer mehrzeilige metatags?
Bedeutung: https://www.devmag.net/webprog/regulaere_ausdruecke.htm
Hallo,

Du glaubst nicht was ich schon alles gesehen habe.

mfg. Nico
Webhosting Partnerprogramm mit 2 Refebenen, PHP Webspace mit .de Domain ab 2 Euro, Zusätzlich suche ich Linkpartner zum Thema "Webmaster". Suchst du einem PHP Programmierer?

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag