1

次のコードを使用して、 php によって呼び出されるテンプレート ファイルにテキストのブロックがあります 。

echo $playlist->description

フィールドには、そのフィールドの結果が twitter api を使用して作成されたツイートボックス内のコンテンツとして表示されるときに削除したい html リンクが含まれています。

表示されるテキストの例:

<a href="http://google.com">http://google.com</a> some text here.

私は次の結果を達成しようとしています:

some text here

私は正規表現、preg_replace、および他のいくつかでこれを達成することを検討しました。ただし、既存の文字列に組み込む方法をまだ理解していません。

次のことを試しましたが、成功しませんでした。

echo $playlist->description->$str = preg_replace('#(<a.*?>).*?(</a>)#', '$1$2', $str)

私は自称 php noob であり、目的を達成するために数週間を費やしてきたので、どんな助けも大歓迎です。本当に近くにいるような気がします!ヘルプ!!!:)

よろしく、マイク

4

3 に答える 3

1

正規表現を使用せずにこれを行うこともできます!

$a = end(explode('</a>' , $playlist->description ));

これにより、その後に続くすべてが得られます</a>

于 2012-04-26T17:21:57.530 に答える
0
echo preg_replace('#.*?</a>\s*(.*)#', "$1", $playlist->description);

乾杯

于 2012-04-26T17:17:28.197 に答える
0

HTML タグとその内容を削除する関数を作成しました。

関数:

<?php
function strip_tags_content($text, $tags = '', $invert = FALSE) {

  preg_match_all('/<(.+?)[\s]*\/?[\s]*>/si', trim($tags), $tags);
  $tags = array_unique($tags[1]);

  if(is_array($tags) AND count($tags) > 0) {
    if($invert == FALSE) {
      return preg_replace('@<(?!(?:'. implode('|', $tags) .')\b)(\w+)\b.*?>.*?</\1>@si', '', $text);
    }
    else {
      return preg_replace('@<('. implode('|', $tags) .')\b.*?>.*?</\1>@si', '', $text);
    }
  }
  elseif($invert == FALSE) {
    return preg_replace('@<(\w+)\b.*?>.*?</\1>@si', '', $text);
  }
  return $text;
}
?>

サンプル テキスト: $text = 'タグ付きサンプルテキスト';

strip_tags($text) の結果: タグ付きのサンプル テキスト

strip_tags_content($text) の結果: テキスト

strip_tags_content($text, ' ') の結果: サンプルテキスト

strip_tags_content($text, '', TRUE); の結果 タグ付きテキスト

誰かが役に立つことを願っています:)

于 2015-04-11T17:15:54.733 に答える