Maç sadece değil backticks

0 Cevap php

İlk şeyler. Ben SimpleXML ile XML / HTML ayrıştırmak için biliyorum, ve ben bunu ayrıştırmak RegEx kullanarak karşı tüm argümanları biliyorum. Bu soru bilginin uğruna olduğunu.

What needs to happen

Bir metin bloğu içinde en biz metin aşağıdaki satırı var diyelim:

The query you need to use is 
<code>SELECT `post_name` FROM table WHERE id= $id</code> 
where `$id` is the `user_ID` we got earlier.

Nasıl aşağıdakiler maç yapın:

 `$id`
 `user_ID`

Ayrıca eşleşen olmadan

`post_name`?

Requirements

Bu regex-tek çözüm olması gerekir. Anlıyorum ve preg_replace_callback vb ilk dizeden <code> blokları kaldırmak için gibi şeyler nasıl kullanılacağını bilmek, ama ben bir regex sadece çözüm arıyorum. Ayrıca, <code lang="php"> gibi olası özelliklerini idare edebilmek gerekir.

Regex gerekiyor match pairs of backticks that are not between <code> ve </code> and the matches may not contain either <code> veya </code> , diğer bağlamlarda yalnız backticks işlemek için.

The content in the backticks will never be multi-lined.

Reasoning

Ben bu olası bir kenar olduğu kişisel bir proje üzerinde çalışıyorum. Bu aramaların sırasını değiştirmek için mümkün olduğu bir işareti aşağı tip proje değildir. <code> etiketleri kaynak metinde vardır ve bir yere gitmiyor.

Backticks gerçek <code> blokları içinde değildir çünkü Ayrıca, ben cevaplar "SimpleXML kullanmak" istemiyorum nedenle bir parçasıdır. Bu sorun ve <code> blokları küçük değişiklikler ile çalışacak için çözüm açıklamak için sadece kullanışlı bir yoldur.

0 Cevap