1

大量の Wordpress XML エクスポートがあります。残念ながら、インストールにコードを挿入し、DIV をコンテンツに挿入することに成功した野郎もいます。今、私はその混乱をきれいにしたいと思っています。外観は次のとおりです。

<p>Normal Text</p>
<div style="position:absolute;top:-9660px;left:-4170px;"><a href="http://insane.link.com">Insane Linktext</a></div>
<div style="position:absolute;top:-2460px;left:-5370px;"><a href="http://insane.link.com">Another Insane Linktext</a></div>
<p>Normal good people's brains' text</p>

STYLE 属性を含む DIV に一致する正規表現を使用することを考えました。利用可能なツールは、Aptana またはその他の TextEditor、PHP サーバー、OSX ターミナルです。これに関する提案はありますか?

ありがとう、乾杯!

4

3 に答える 3

2

正規表現を使用するのではなく、実際の XML パーサーを使用することをお勧めします。たとえば、OS X を使用しているため、Ruby が既にインストールされている場合は、次のように HTML をクリーンアップできます。

require 'nokogiri'                      # Use `sudo gem install nokogiri` first
html = Nokogiri.HTML(IO.read(ARGV[0]))  # read and parse the HTML document
html.css('div[style]').remove           # destroy all <div style="...">...</div>
File.open(ARGV[1],'w'){ |f| f << html } # write the html to disk as a new file

コメントに従って、最初に Nokogiri をインストールする必要があります。

次に、上記を「clean_divs.rb」として保存し、入力ruby clean_divs.rb my.html my_fixed.htmlします(最初の部分は読み取るファイルの名前で、2番目は書き込むファイルの名前です)。

より正確に破棄したい場合は、XPath を使用して破棄する要素を選択できます。たとえばhtml.xpath('//div[@style][a]').remove、style 属性と<a>直接の子要素を持つ div のみを検索できます。

于 2012-04-25T01:12:26.943 に答える
0

これらの要素を削除するには、空のテンプレートで変更された恒等変換を使用できます。<div>

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

    <!--default processing for content is to copy forward -->
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

    <!--remove the rogue div elements -->
    <xsl:template match="div[@style]" />

</xsl:stylesheet>
于 2012-04-25T01:31:16.303 に答える
0

これはあなたを助けるかもしれません:それはあなたが上で提供したdivと一致します:

<div style="[a-zA-Z0-9-:;]+"><a href="[a-z:/.]+">[a-zA-Z ]+</a></div>

ただし、div > a > textパターンのみに一致し、style 属性を持つ div のみに一致し、他には何も一致しません。

ほとんどの HTML エディターを使用して、検索と置換を実行できるはずです (Dreamweaver と Notepad++ の両方で許可されています)。

于 2012-04-25T01:10:04.370 に答える