comment faire correspondre ce type de construction?
-
05-07-2019 - |
Question
je fais l'analyse et le type de texte que je veux faire correspondre, puis le rendre nul est comme suit: -
<tr class="label-BGC"><td colspan="4">any kind of text here</td></tr>
je veux faire correspondre chaque ligne qui contient "<tr class="label-BGC"><td colspan="4">any text</td></tr>"
sa soirée ici et mon cerveau-batterie est totalement en panne
Ce que j'essaie de faire est: -
$patterns='<td colspan="4">'.stristr($parsed,'[^a-z0-9_- $]').'</td></tr>';
$replacements=' ';
$parsed = str_replace($patterns, $replacements, $parsed);
$ parsed contient l’ensemble des données analysées.
mon code ne fonctionne pas, quelqu'un peut-il m'aider avec quelques suggestions ici !!!
La solution
Essayez quelque chose de simple comme ceci:
$parsed = preg_replace('{<tr class="label-BGC"><td colspan="4">.*?</td></tr>}',
$replacements, $parsed);
Le. correspond à n'importe quel caractère, le * le fait correspondre à 0-plusieurs, et le? arrête d'être gourmand -i.e. il s’arrêtera à la première séquence et non à la dernière possible.
Autres conseils
Essayez ce qui suit:
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);
Toutes les \s
correspondances sont peut-être un peu excessives, mais il est très indulgent si cette entrée provient d'un utilisateur.
Sinon, vous pouvez probablement vous contenter de
preg_replace("`<tr class="label-BGC"><td colspan="4">.*?</td></tr>`i", "", $content);