0

私は次のようなことをしたい:

<?php
$text = "<font style='color: #fff'>";
$replaceandshow = str_replace("<font style=\"?\">", "the font style is ?", $text);
echo $replaceandshow;
?>

たとえば、? は color: #fff ですが、PHP に自動でトレースしてもらいたいです. 可能ですか + 可能なら , どうすればできますか?

PS: 誰かが私にコードをくれましたが、今は機能しており、白いページが表示されます。

<?php
$colorstring = "<font style='#fff'>";
$searchcolor = preg_replace('[a-fA-F0-9]{3,6}','[font style=$1]Test[/font]',$colorstring);
echo $searchcolor;

助けてくれてありがとう。

4

3 に答える 3

1

基本的に HTML から任意の属性を引き出す必要があるため、php XML 解析を使用してこれを行うことができます。

<?php
$doc=new DOMDocument();
$doc->loadHTML("<html><body>Test<br><font style='color: #fff;'>hellow</font><a href='www.somesite.com' title='some title'>some site</a></body></html>");
$xml=simplexml_import_dom($doc); // just to make xpath more simple
$fonts=$xml->xpath('//font');
foreach ($fonts as $font) {
    echo 'font style = '.$font['style']."<br />";
}

$as=$xml->xpath('//a');
foreach ($as as $a) {
    echo 'href = '.$a['href'] . ' title = ' . $a['title']."<br />";
}
?>

それは戻ります:

font style = color: #fff;
href = www.somesite.com title = some title

抽出する必要のある HTML タグごとに異なる foreach ループを使用して、必要な属性を出力できます。

How to extract img src, title and alt from html using php? に基づく回答

于 2012-08-09T18:18:38.603 に答える
1

エラー報告がオフになっているため、白いページが表示されます。コードのエラーで、 に区切り文字がありませんpreg_replace。さらに、後方参照を使用するには、一致に必要な式を括弧で囲む必要があります。

preg_replace('/([a-fA-F0-9]{3,6})/','the font style is $1',$colorstring);

正しい出力を与えるものとします。

現在の式は、"FFFont" などの他の文字列との一致に対して非常にオープンであるため、より制限的な式の使用を検討することもできます。注意すべきもう 1 つの点は、式が次のような出力になる可能性があることです。

<font style='color: the color is #fff'>

試す:

/<font style='color: #([a-fA-F0-9]{3,6})'>/
于 2012-08-09T18:23:28.283 に答える
0

これは単純なstyle属性で機能します。

$text = "<font style='color: #fff'>";
preg_match("/<font style=['\"]([^'\"]+)['\"]>/", $text, $matches);
echo "The font style is ".$matches[1];

より複雑なもの (例: 引用符が含まれている場合) については、 http: //www.php.net/manual/en/class.domdocument.php などの HTML パーサーを使用する必要があります。

于 2012-08-09T18:17:53.587 に答える