1

特定のタグを PHP に置き換える必要がある動的タグ要素があります。

基本的に、タグ部分をテキスト<a>に置き換えるだけで十分です。<img>たとえば、次のようになります。

<a target="_blank" 
   title="Visit MarcAira14 on Facebook" 
   href="http://www.facebook.com/MarcAira14"
>
  <img alt="Facebook icon" src="/sites/all/modules/contrib/socialmedia/icons/levelten/glossy/48x48/facebook.png">
</a>

次のようになります。

<a target="_blank" 
   title="Visit MarcAira14 on Facebook"
   href="http://www.facebook.com/MarcAira14"
>Facebook</a>

title="Visit MarcAira14 on Facebook"また、タイトル属性 ( ) の最後の文字列 (この場合は )も取得する必要があります"Facebook"

アイデアや提案をお寄せいただければ幸いです。

4

2 に答える 2

2

これこそまさに、HTML パーサーが存在する目的です。1 つの方法は、PHP 独自のDOMDocument.

もう 1 つの簡単な方法は、DOMDocument の優れたラッパーであるphpQueryです。(しばらく更新されていないようですが、最終更新は2009年5月です。)

phpQuery は jQuery から多くを借用しているため、jQuery に精通していれば、多くの既知の概念を使用できます。

あなたの場合、次のようになります。

$doc = phpQuery::newDocument($yourHtmlOrHtmlFragment);

$links = $doc['a[title!=""]:has(img)'];

foreach( $links as $link )
{
    $title = $link->getAttribute('title');
    $words = explode(' ', $title);
    $last_word = end( $words );
    pq($link)->empty()->text( $last_word );
}

phpQuery のマニュアルも参照してください。

PHP 用のその他の HTML パーサーについては、堅牢で成熟した PHP 用の HTML パーサー で説明しています。

于 2012-12-11T16:40:05.440 に答える
0

これは正規表現バージョンです。私はそれをテストしましたが、動作します。text.html はソース文字列です。

<?php

$string = file_get_contents('text.html');
$pattern = "/<img alt=([^<])*/m";
$replacement = 'Facebook';
echo preg_replace($pattern, $replacement, $string);

?>

「<img alt=」を検索し、最初の「<」までのすべての文字を検索して、Facebook に置き換えます。末尾の m は、複数行を検索することを意味します。

于 2012-12-11T16:30:01.040 に答える