Convertissez des chaînes telles que *italique* en <i>italique</i>, mais pas si le caractère de nouvelle ligne est dans la limite de l'astérisque.
P粉262073176
P粉262073176 2024-03-29 21:43:59
0
1
393

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 text

Ensuite, l'expression régulière considère toujours le texte et le convertit en :

<i>This is my text<br></i> Some other text

Le 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

Idée : Ou devrais-je décomposer

puis utiliser une expression régulière pour parcourir le résultat ? ! $line

P粉262073176
P粉262073176

répondre à tous(1)
P粉396248578

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
  • |代码> : ou
  • *([^*]*)*:匹配 *chaîne ci-jointe
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal