ne bu kodu yanlış?

4 Cevap php

bazı bağlantılar içeren bir değişken olan im. Şimdi ben linki insanlar sekmesi tıklandığında hangi bilmek gelebilir, böylece onun çapa etiketi kaldırmak için tıkladım ve hae hangi olmadığını kontrol etmek istiyorum.

Bu veri örneği aşağıda verilmektedir: -

<a href="#" onclick="sort_data('All','all')">All</a> | <a href="#" onclick="sort_data('Diversified','1')">Equity</a> | <a href="#" onclick="sort_data('Liquid','1')">Liquid</a> | <a href="#" onclick="sort_data('Sector','1')">Sector</a>

Şimdi ne yapmaya çalıştığını im i sekmesi belirli çapa onun çalışmadığı cezası tag.But yerine php kullanarak sonra js işlevi cliked ve hangi görüyoruz olmasıdır.

$links='<a href="#" onclick="sort_data('All','all')">All</a> | <a href="#" onclick="sort_data('Diversified','1')">Equity</a> | <a href="#" onclick="sort_data('Liquid','1')">Liquid</a> | <a href="#" onclick="sort_data('Sector','1')">Sector</a>
';
if(preg_match('/<A HREF="#" onclick="(.*?)>Equity/',$links))
{
    echo preg_replace('/<A HREF=(.*?)>Equity/','Equity',$links);
}

Ben sadece Sermayesi'nin çapa etiketi çıkarılmalı ve başka olduğu gibi kalması gerektiğini isterken bu Özkaynak önce yazılmış her şeyi değiştiriyor. Im ne burada yanlış yapıyor ve bunu yapmak için gidecekseniz biraz daha iyi bir yolu varsa o zaman ben bana söylediğin için teşekkür ederim.

4 Cevap

Sen kodunda birden kusurları var:

  1. Eğer küçük harf kullanılmasına rağmen sizin, büyük harf arıyor. i (harf duyarsız) seçeneği, bu kullanımı düzeltmek veya Tescil exp değiştirmek için.
  2. Sen kapanış etiketi </a> unuttum.
  3. Açgözlü * arandı birinin önünde her bağlantı tüketecektir.
  4. (Eğer ony manipüle dize kullanmaya devam etmek istiyorsanız eğer şube, muhtemelen gereksizdir.)

Bu deneyin:

$links='<a href="#" onclick="sort_data('All','all')">All</a> | <a href="#" onclick="sort_data('Diversified','1')">Equity</a> | <a href="#" onclick="sort_data('Liquid','1')">Liquid</a> | <a href="#" onclick="sort_data('Sector','1')">Sector</a>';
if(preg_match('/<A([^<>]*)>Equity</A>/i',$links)) {
    echo preg_replace('/<A([^<>]*)>Equity</A>/i','Equity',$links);
}

you should use the case insensitive flag on preg_match and preg_replace. Also preg_match would match only one link, if you need to replace all link preg_match_all would be better.

$links='<a href="#" onclick="sort_data(\'All\',\'all\')">All</a> | <a href="#" onclick="sort_data(\'Diversified\',\'1\')">Equity</a> | <a href="#" onclick="sort_data(\'Liquid\',\'1\')">Liquid</a> | <a href="#" onclick="sort_data(\'Sector\',\'1\')">Sector</a>
';
if(preg_match('/<A HREF="#" onclick="(.*?)>Equity/i',$links))
{
    echo preg_replace('/<A HREF=([^>]*)>Equity/i','<A $1>Equity',$links);
}


Note: Ben sunucu tarafında yapıyoruz neden bilmiyorum ama bir javascript çerçeve ile istemci tarafında bunu yapmak için daha iyi olabilir, jquery Bu tür manipülasyonlar yapmak için mükemmel olurdu. Ayrıca, bakım için non intrusive javascript gerçekten iyi yapmak için iyi olması

Eğer yapmak istediğiniz tüm <A HREF=...> kurtulmak ve </A> etiketleri almak ise, neden strip_tags fonksiyonunu kullanmak değil mi?