1

これはとても簡単な「コンマの変更」であるべきだと思うので、調査を行い、さまざまなことを試しましたが、何もうまくいかないようです. まず、デバッグに使用したコード:

/* More code before */

$Test = "This is a test <ul>TEST</ul> Blabla";
$Real = $Data['chapters']['introduction'];
var_dump($Real);
echo "\n\n";

preg_match('/<ul>(.*)<\/ul>/', $Test, $VarTest);
var_dump($VarTest);
echo "\n\n";

preg_match('/<ul>(.*)<\/ul>/', $Real, $VarReal);
var_dump($VarReal);

結果は次のとおりです。

string(1888) "<p>The <b>theory of relativity</b>, or simply <b>relativity</b>, generally encompasses two theories of <a href="http://en.wikipedia.org/wiki/Albert_Einstein" title="Albert Einstein">Albert Einstein</a>: <a href="http://en.wikipedia.org/wiki/Special_relativity" title="Special relativity">special relativity</a> and <a href="http://en.wikipedia.org/wiki/General_relativity" title="General relativity">general relativity</a>. Concepts introduced by the theories of relativity include:</p>
<ul>
  <li>
    <p>Measurements of various quantities are <i>relative</i> to the velocities of observers. In particular, space and time can <a href="http://en.wikipedia.org/wiki/Time_dilation" title="Time dilation">dilate</a>.</p>
  </li>
  <li>
    <p><a href="http://en.wikipedia.org/wiki/Spacetime" title="Spacetime">Spacetime</a>: space and time should be considered together and in relation to each other.</p>
  </li>
  <li>
    <p>The speed of light is nonetheless invariant, the same for all observers.</p>
  </li>
</ul>
<p>The term &quot;theory of relativity&quot; was based on the expression &quot;relative theory&quot; (<a href="http://en.wikipedia.org/wiki/German_language" title="German language">German</a>: <span lang="de"><i>Relativtheorie</i></span>) used by <a href="http://en.wikipedia.org/wiki/Max_Planck" title="Max Planck">Max Planck</a> in 1906, who emphasized how the theory uses the <a href="http://en.wikipedia.org/wiki/Principle_of_relativity" title="Principle of relativity">principle of relativity</a>. In the discussion section of the same paper <a href="http://en.wikipedia.org/wiki/Alfred_Bucherer" title="Alfred Bucherer">Alfred Bucherer</a> used for the first time the expression &quot;theory of relativity&quot; (<a href="http://en.wikipedia.org/wiki/German_language" title="German language">German</a>: <span lang="de"><i>Relativit&auml;tstheorie</i></span>).</p>
"

array(2) {
  [0]=>
  string(13) "<ul>TEST</ul>"
  [1]=>
  string(4) "TEST"
}


array(0) {
}

最後の配列が空である理由 (3 つのリスト要素を含める必要がある場合) について何か考えはありますか?

いくつかの詳細情報は、PDO を使用して MySQL から取得されます。(引用符のために) エスケープを試み、引用符を置き換え、このテキスト サイズが preg_match() 文字列の制限をはるかに下回っていることを確認しました。問題は。問題が具体的にどこにあるかについては、コード自体が物語っていると思いますが、とにかく、必要なテストを喜んで実行します。ありがとう。

4

3 に答える 3

2

2 番目のケースの正規表現は複数行です。関数呼び出しに「m」を追加します。

preg_match('/<ul>(.*)<\/ul>/m', $Real, $VarReal);
于 2013-05-19T20:20:51.950 に答える
1

SOの回答を少し変更したコードを使用しました。しかし、他の回答を確認し、Patrice Levesque の回答を見て解決策を見つけました。この質問によると、関数呼び出しに「s」を使用しました。

preg_match('/<ul>(.*)<\/ul>/s', $Real, $VarReal);
于 2013-05-19T20:31:08.560 に答える