Tukar rentetan seperti *italic* kepada <i>italic</i>, tetapi tidak jika aksara baris baharu berada dalam had asterisk
P粉262073176
P粉262073176 2024-03-29 21:43:59
0
1
375

Saya mempunyai ungkapan biasa berikut dalam kod PHP saya:

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

Ia berfungsi dengan baik.

Walau bagaimanapun, apabila $line 持有 <br> cth

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

Kemudian regex masih mempertimbangkan teks dan menukarnya kepada:

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

Matlamatnya adalah untuk tidak menterjemah teks jika

ditemui. Bagaimanakah saya boleh melakukan ini menggunakan ungkapan biasa - menggunakan apa yang dipanggil "pandangan negatif" atau bagaimana saya menukar ungkapan biasa sedia ada? <br>

Nota: Rentetan seperti

masih perlu dipertimbangkan dan ditukar. *This is my text*<br>Some other text<br> 和再次 *italic*<br>END

Idea: Atau patutkah saya mengurai

dan kemudian menggunakan regex untuk mengulangi keputusan? ! $line

P粉262073176
P粉262073176

membalas semua(1)
P粉396248578

Menggunakan teknik padan apa yang anda tidak mahu dan buang, anda boleh menggunakan ungkapan biasa ini dalam PHP (PCRE):

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

dan gantikan dengan

Demonstrasi Ekspresi Biasa

Kod PHP:

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

Arahan:

  • *:匹配*
  • [^*]*:匹配 0 个或多个非 * watak

  • :匹配
  • *:匹配结束 *
  • (*SKIP)(*F): kata kerja PCRE untuk membuang dan melangkau perlawanan ini
  • |代码>: atau
  • *([^*]*)*:匹配 * rentetan tertutup
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!