0

次のコードがあります。

<td class="smallText" width="33%" valign="top" align="center">
<a href="#"><img width="100" height="100" border="0" title=" Genuine Value Pack " alt="Brother TN" src="images.jpg"></a>
<br>
<a href="#">Brother TN 240 Genuine Value Pack</a><br>
$325.00


Brother TN 240 純正バリュー パック
$123.00
Brother TN 240 純正バリュー パック
$54.00

PHPを使用して各tdの価格を削除するにはどうすればよいですか?

4

2 に答える 2

1

ターゲティングを特定の dom 要素に絞り込むことができると仮定すると (たとえば、すべての価格が明確に特定できる div にあるとします)、正規表現を使用して価格文字列を削除できます。

取得した要素内のすべてのエリアのすべての価格が削除されるため、これは危険です。

$myHtmlFromContainingElement = getMyDiv(/* sort this out yourself */);
$myHtmlWIthoutPrices = preg_replace('/\$[0-9]{1,10}\.[0-9]{1,10} /','',$myHtmlFromContainingElement);

これの欠点:

  • preg 置換は遅いので、動的ページではなく、キャッシュ/公開されているページでこれを行うことをお勧めしますが、それは犠牲になるかもしれません。
  • これは、正確な形式、つまり「$NNNNNNNNNN.NNNNNNNN」または「ドル記号、1 ~ 10 個の数字、ドット、1 ~ 10 個の数字、およびスペース」に一致する価格のみを処理します。
  • これにより、指定された選択からすべての価格が削除されます。

http://www.functions-online.com/preg_replace.htmlで簡単にテスト済み

于 2012-10-23T19:22:15.340 に答える
0

探している文字列がわかっている場合は、たとえば $find = "$41.90"; を実行できます。$replace = ""; // 空の文字列 $myhtmlstring = str_replace($find,$replace,$myhtmlstring);

tdタグに含まれていることがわかっている場合は、simple_html_dom (http://simplehtmldom.sourceforge.net/) または symfony の dom クローラー (http://symfony.com/doc/2.0/components/dom_crawler.html) を使用して解析できます。 html を開き、すべてのtdタグのリストを生成します。これにより、チェックする項目が絞り込まれます。

また、正規表現に置き換えてみることもできます。「$」に続く数字を検索します。

于 2012-10-19T10:37:46.793 に答える