2

さて、私はこれを正しい方法で行っていないかもしれませんが、ここに行きます..

リンクを取得してタグ間のテキストを抽出するこの文字列があります...

$string = $item;
$pattern = '/\<a([^>]*)\>([^<]*)\<\/a\>/i';
$replacement = '$2';
$message = preg_replace($pattern, $replacement, $string);

この文字列には、(タグ部分ではなくテキスト部分に) アンパサンドを含む項目がいくつかありますが、ほとんどの項目にはありません。アンパサンドを現在のパターンに組み込むか、別の preg_replace を実行して$message、タグが削除された後にアンパサンドを削除する方法を見つけようとしています。

ありがとう!

4

2 に答える 2

7

いつもある$message = str_replace('&', '', $message);

ちなみに、html 入力からタグを取り除こうとしている場合は、strip_tags

たとえば、入力が

$text = '<a href="google.com">Text</a>';

その後strip_tags($text)、生成されTextます。

于 2012-09-05T19:24:45.617 に答える
2

アンパサンドの後のすべてを削除しますか? それなら

'/\<a([^>]*)\>([^<&]*)[^<]*\<\/a\>/i';

それ以外の場合は、2 回目の操作が必要になります。

ところで: あなたの正規表現は、やタグ<aなど、 で始まる他のタグとも一致します。<author><audio>

于 2012-09-05T19:25:17.293 に答える