0

php と Regex を使用<li>Valid in US</li>して、最後のUL後に最後に追加するLIか、単に最後の後に追加しようとしていLIます。

ULデバッグ時に、最後のタグの内容を取得することさえできません。このコードは、var_dump を実行しても何も表示されません (これも試しpreg_match_allました)。

if (preg_match("/((<ul>(.*?)<\/ul>/s){3})", $desc, $WARRANTY) == true)
var_dump($WARRANTY);

これは の内容です$desc:

<h1>Stuff</h1>
<p>description</p>
<hr />
<strong>Features &amp; Benefits</strong>
<ul>
  <li>feat</li>
  <li>feat</li>
  <li>feat</li>
</ul>
<hr />
<strong>Specifications</strong>
<ul>
  <li>spec</li>
  <li>spec</li>
  <li>spec</li>
</ul>
<hr />
<strong>Warranty Information for a certain product</strong>
<ul>
  <li>3 Years Parts</li>
  <li>3 Years Labor</li>
</ul>
<div> <a href="/ahref" target="_blank">See more products from MFG </a></div>
4

2 に答える 2

1

これは正規表現を使用せず、非常にハックですが、機能します。

if($pos = strripos($desc, '</ul>')) {
    $desc= substr_replace($desc, "<li>Valid in US</li>\n</ul>" , $pos, strlen($desc));
}

echo $desc;
于 2012-04-30T15:26:15.683 に答える
1

<ul>2 つのタグのみを含むタグに一致させたい場合は、次の<li>正規表現を使用できます。

<ul>\s*(<li>[^<]+</li>\s*){2}</ul>

3 番目の li タグを追加する別のハックな方法を提案できます。

  • 次の正規表現を使用します。

    <ul>\s*(?:<li>[^<]+</li>\s*){2}(<)/ul>

  • 最初のグループの一致を<li></li>コンテンツに置き換え、その後に<- が続きます。それがグループによってキャプチャされたものだからです(<)

于 2012-04-30T15:46:49.970 に答える