Maison > Questions et réponses > le corps du texte
J'ai l'expression régulière suivante dans mon code PHP :
// markers for italic set *Text* if (substr_count($line, '*')>=2) { $line = preg_replace('#\*{1}(.*?)\*{1}#', '<i></i>', $line); }
Ça fonctionne très bien.
Cependant, quand $line
持有 <br>
par ex.
*This is my text<br>* Some other textEnsuite, l'expression régulière considère toujours le texte et le convertit en :
<i>This is my text<br></i> Some other textLe but est de ne pas traduire le texte si
est rencontré. Comment puis-je faire cela à l'aide d'expressions régulières - en utilisant ce qu'on appelle une "anticipation négative" ou comment puis-je modifier l'expression régulière existante ? <br>
Remarque : les chaînes comme
doivent toujours être prises en compte et converties. *This is my text*<br>Some other text<br> 和再次 *italic*<br>END
puis utiliser une expression régulière pour parcourir le résultat ? ! $line
P粉3962485782024-03-30 20:42:40
En utilisant la technique faire correspondre ce que vous ne voulez pas et supprimer, vous pouvez utiliser cette expression régulière en PHP (PCRE) :
\*[^*]*
\*(*SKIP)(*F)|\*([^*]*)\*
et remplacez par
Démonstration d'expression régulière
Code PHP :
$r = preg_replace('/\*[^*]*
\*(*SKIP)(*F)|\*([^*]*)\*/'), "", $input);
Instructions :
*
:匹配*
[^*]*
:匹配 0 个或多个非 *
personnages
:匹配
*
:匹配结束 *
(*SKIP)(*F)
: verbe PCRE pour écarter et sauter ce match*([^*]*)*
:匹配 *
chaîne ci-jointe