как соответствовать этому типу конструкции? - PullRequest
0 голосов
/ 10 сентября 2009

я делаю разбор и вид текста, который я хочу сопоставить, а затем сделать его нулевым, выглядит следующим образом:

<tr class="label-BGC"><td colspan="4">any kind of text here</td></tr> 

я хочу сопоставить каждую строку, содержащую "<tr class="label-BGC"><td colspan="4">any text</td></tr>"

его вечер здесь, и мой мозг полностью разрядился

я пытаюсь сделать следующее: -

$patterns='<td colspan="4">'.stristr($parsed,'[^a-z0-9_- $]').'</td></tr>';
$replacements=' ';
$parsed = str_replace($patterns, $replacements, $parsed);

$ parsed содержит все данные, которые я анализирую.

мой код не работает, может кто-нибудь помочь мне с некоторыми предложениями здесь

Ответы [ 2 ]

0 голосов
/ 10 сентября 2009

Попробуйте следующее:

preg_replace("`\s*<tr\s+class\s*=\s*"label-BGC"\s*>\s*<td\s+colspan\s*=\s*"4"\s*>.*?</td\s*>\s*</tr\s*>\s*`i", "", $content);

Все совпадения \s могут быть немного излишними, но очень простительно, если эти данные поступают от пользователя.

В противном случае, вы можете просто сойти с рук

preg_replace("`<tr class="label-BGC"><td colspan="4">.*?</td></tr>`i", "", $content);
0 голосов
/ 10 сентября 2009

Попробуйте что-нибудь простое, как это:

$parsed = preg_replace('{<tr class="label-BGC"><td colspan="4">.*?</td></tr>}', 
                      $replacements, $parsed);

. соответствует любому символу, * соответствует 0-много, а? перестает быть жадным, т.е. остановится на первой последовательности, а не на последней возможной.

...