regexp link title attribute

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • regexp link title attribute

    Hallo,

    ich habe ein kleines Problem mit einem php parser.
    Ziel ist es, allen Links die kein title attribut haben, ein leeres title attribut anzufügen.

    Also aus:
    <a href="...">
    wird:
    <a title="" href="...">

    Hier ist mein Ansatz, der aber nur zum Teil funktioniert.
    Sobald mehr als ein Link in einer Zeile ist, wird nur dem letzten Link ein title hinzugefügt.
    Hat jemand eine Idee warum und wie ich das beheben kann?

    PHP-Code:
    $regExp "(.*)<a(.*)";
    $replace "\\1<a title=\"\"\\2";

    $file join('',file("test.html"));
    preg_match_all("/<a.*(?!title)/i"$file$atag);
    foreach(
    $atag[0] as $string) {
        print 
    htmlspecialchars(ereg_replace($regExp$replace$string))."<br />";


  • #2
    1. Solltest glaube ich das gesamte $atag durchlaufen und nicht nur $atag[0] und 2. musst du deine RegEx wohl mehr einschränken. (oder dich mit "greedy" spielen)

    Aber in deinem Fall wäre preg_replace() vielleicht ohnehin gescheiter.

    zB sowas in der Art:
    PHP-Code:
    $from '/(<a)/i';
    $to '\\1 title=""';

    $s preg_replace($from$to$file); 
    Um alle Links zu finden, die kein "title" drin stehen haben, musst du wahrscheinlich den kompletten Link Tag in dein Regex einbauen und das "title" mit Negation ausschließen. Hab atm aber leider keine Zeit, da was zu basteln.

    Kommentar


    • #3
      Cool, danke für den Gedankenschub. Ich werd mich gleich ransetzen...
      Sobald ich ein Ergebnis hab lass ich es Dich wissen.

      Kommentar


      • #4
        Jo, du hattest recht, es klappt.
        PHP-Code:
        $regExp '/(<a)/i';
        $replace '\1 title=""';
          
        $file file("test.html");
        $add_title preg_replace($regExp$replace$file);
        foreach(
        $add_title as $line_num => $string) {
            print 
        htmlspecialchars($string)."<br />";

        Nun muss ich nur noch irgendwie doppelte title einträge verhindern.
        Leider bin ich kein Regex-Experte.
        Bitte daher nochmal um hilfe.
        Zuletzt geändert von Mayko; 05.05.2008, 23:27.

        Kommentar

        Lädt...
        X