Konvertieren Sie Zeichenfolgen wie *kursiv* in <i>kursiv</i>, jedoch nicht, wenn das Zeilenumbruchzeichen innerhalb der Sternchenbeschränkung liegt
P粉262073176
P粉262073176 2024-03-29 21:43:59
0
1
334

Ich habe den folgenden regulären Ausdruck in meinem PHP-Code:

// markers for italic set *Text*
if (substr_count($line, '*')>=2)
{
    $line = preg_replace('#\*{1}(.*?)\*{1}#', '<i></i>', $line);
}

Es funktioniert großartig.

Wenn $line 持有 <br> z.B

*This is my text<br>* Some other text

Dann berücksichtigt die Regex den Text noch und wandelt ihn um in:

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

Das Ziel besteht darin, den Text nicht zu übersetzen, wenn

auftritt. Wie mache ich das mit regulären Ausdrücken – mit dem sogenannten „negativen Lookahead“ oder wie ändere ich den vorhandenen regulären Ausdruck? <br>

Hinweis: Zeichenfolgen wie

sollten dennoch berücksichtigt und konvertiert werden. *This is my text*<br>Some other text<br> 和再次 *italic*<br>END

Idee: Oder sollte ich zerlegen

und dann Regex verwenden, um das Ergebnis zu durchlaufen? ! $line

P粉262073176
P粉262073176

Antworte allen(1)
P粉396248578

使用匹配你不想要的内容并丢弃技术,您可以在 PHP (PCRE) 中使用此正则表达式:

\*[^*]*
\*(*SKIP)(*F)|\*([^*]*)\*

并替换为$1

正则表达式演示

PHP 代码:

$r = preg_replace('/\*[^*]*
\*(*SKIP)(*F)|\*([^*]*)\*/'), "$1", $input);

说明:

  • \*:匹配*
  • [^*]*:匹配 0 个或多个非 * 字符

  • :匹配
  • \*:匹配结束 *
  • (*SKIP)(*F):要丢弃并跳过此匹配的 PCRE 动词
  • |代码>:或
  • \*([^*]*)\*:匹配 *s 括起来的字符串
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!