Rumah > Soal Jawab > teks badan
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 textKemudian regex masih mempertimbangkan teks dan menukarnya kepada:
<i>This is my text<br></i> Some other textMatlamatnya 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
dan kemudian menggunakan regex untuk mengulangi keputusan? ! $line
P粉3962485782024-03-30 20:42:40
Menggunakan teknik padan apa yang anda tidak mahu dan buang, anda boleh menggunakan ungkapan biasa ini dalam PHP (PCRE):
\*[^*]*
\*(*SKIP)(*F)|\*([^*]*)\*
dan gantikan dengan
Kod PHP:
$r = preg_replace('/\*[^*]*
\*(*SKIP)(*F)|\*([^*]*)\*/'), "", $input);
Arahan:
*
:匹配*
[^*]*
:匹配 0 个或多个非 *
watak
:匹配
*
:匹配结束 *
(*SKIP)(*F)
: kata kerja PCRE untuk membuang dan melangkau perlawanan ini*([^*]*)*
:匹配 *
rentetan tertutup