0

次のような文字列をクリーンアップする必要があります。

$author_name = '<a href="http://en.wikipedia.org/wiki/Robert_Jones_Burdette>Robert Jones Burdette </a>';

href タグには終了引用符がないことに注意してください。テキストを抽出するために、これらの大きなテーブルで DOMParser を使用していますが、これでうまくいきません。

$author_name; の文字列を確認したいと思います。

最初の > の前に " がない場合は、> に置き換えてタグを正しく閉じます。大丈夫な場合は、スキップして次のステップに進んでください。2 番目の > をまったく置き換えないでください。

php 正規表現を使用して、私は実用的な解決策を見つけることができませんでした.全体を切り刻んでその部分を確認することはできましたが、それは遅くなり、私が望むことを行うことができる正規表現がなければならないと思います.

ティア

4

2 に答える 2

1

できることは、二重引用符 (") の有無にかかわらず、最初の終了タグを見つけて (">) に置き換えることです。

$author_name = preg_replace('/(.+?)"?>(.+?)/', '$1">$2', $author_name);
于 2013-02-15T02:02:52.850 に答える
0

http://www.barattalo.it/html-fixer/

それをダウンロードして、php に含めます。残りは非常に簡単です。

$dirty_html = ".....bad html here......";

$a = new HtmlFixer();
$clean_html = $a->getFixedHtml($dirty_html);

正規表現を使いたがる人はよくいますが、 HTML は正規表現ではないことを覚えておく必要があります。

于 2013-02-15T01:51:54.123 に答える