Procisteni HTML tagu – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Procisteni  HTML tagu – PHP – Fórum – Programujte.comProcisteni HTML tagu – PHP – Fórum – Programujte.com

 

zak0
Newbie
11. 8. 2017   #1
-
0
-

Ahoj,

potrebuji procistit 18 let stary web. Clanky jsou ulozeny v databazi a obsahuji ruzne zapsane tagy napr. <p ALIGN="CENTER" >, <p ALIGN="CENTER">,, <p align="CENTER"> <P ALIGN="CENTER" >, <P ALIGN=CENTER >, <P ALIGN='CENTER'> a tak podobne.

Rad bych je

1) prevedl na mala pismena

2) centrovani atd nahradil za css trid tedy treba class='center', class='justify' ...

Jak mohu vse co je uzavreno v <> vybrat? Uvitam i rady na procisteni, treba nejaky reg. vyraz ... s temi si rozumim jen trosku :-(

Idealni by byl hotovy priklad.

Predem dekuji za pomoc.

Jirka

Nahlásit jako SPAM
IP: 31.30.86.–
peter
~ Anonymní uživatel
3981 příspěvků
14. 8. 2017   #2
-
0
-

Pro zacatek muzes pouzit str_replace, kde definujes pole typu
$patt = array(
'align="CENTER"',
'align="center"',
'align="CENTER"'
);
$repl = array(
'class="center"',
'class="center"',
'class="center"'
);
$str = str_replace($patt, $repl, $str);

Ten reg. vyraz se da vygooglovat. Ale neni problem tak jednoduchy.
- Co kdyz tag uz class ma?
- Co kdyz tag pouziva nezname align?
- Co kdyz je v zapisu chyba?
- Co kdyz tam nejsou uvozovky nebo jsou jednoduche nebo je tam hlml entita?
- Co kdyz je tam neukoncena uvozovka?
(Firefox obsahuje chybu, ze ma spatne nastavene priority a vysledkem
<table align="center><tr> neni
<table align="center"><tr> ale
<table align="center&gt;&lt;tr&gt; a celej web to rozhazi :)

Nahlásit jako SPAM
IP: 2001:718:2601:258:79e4:c5...–
peter
~ Anonymní uživatel
3981 příspěvků
14. 8. 2017   #3
-
0
-

jo, ten posl radek align mel byt ne
'align="CENTER"' ale
'ALIGN="CENTER"' ale jeste bych tam mozna pridal
'align="Center"'
'Align="Center"'
'ALIGN="Center"'

Nahlásit jako SPAM
IP: 2001:718:2601:258:79e4:c5...–
zak0
Newbie
14. 8. 2017   #4
-
0
-

#3 peter
Nejakym podobnym zpusobem ten zdroj pokusne cistim. Ale nevim jake tagy v tech zdrojacich jsou. Proto me zajima zda je mozne nejak vypsat vse co je uzavreno mezi znaky <> abych mohl cisteni doladit.
Muzes mi s tim vypisem (treba prave za pouziti RV) poradit? Diky.

Nahlásit jako SPAM
IP: 31.30.86.–
peter
~ Anonymní uživatel
3981 příspěvků
14. 8. 2017   #5
-
0
-

Tak ja ti pomuzu googlovat, dobre.
1. otevres stranku google.com (ono to presmeruje na google.cz)
2. do vyhledavaciho policka zadas: php regullar expression tag params
3. kliknes na prvni nalezenou stranku, shodou okolnosti manual a tam je 

$patterns = array(
            "/\[link\](.*?)\[\/link\]/",
            "/\[url\](.*?)\[\/url\]/",
            "/\[img\](.*?)\[\/img\]/",
            "/\[b\](.*?)\[\/b\]/",
            "/\[u\](.*?)\[\/u\]/",
            "/\[i\](.*?)\[\/i\]/"
        );
        $replacements = array(
            "<a href=\"\\1\">\\1</a>",
            "<a href=\"\\1\">\\1</a>",
            "<img src=\"\\1\">",
            "<b>\\1</b>",
            "<u>\\1</u>",
            "<i>\\1</i>"
           
        );
        $newText = preg_replace($patterns,$replacements, $text);

 ---

function strip_selected_tags($str, $tags = "", $stripContent = false)
{
    preg_match_all("/<([^>]+)>/i", $tags, $allTags, PREG_PATTERN_ORDER);
    $replace = "%(<$tag.*?>)(.*?)(<\/$tag.*?>)%is";
    foreach ($allTags[1] as $tag) {
        if ($stripContent) {
            $str = preg_replace($replace,'',$str);
        }
            $str = preg_replace($replace,'${2}',$str);
    }
    return $str;
}
?>

3b. Asi paty odkaz vede na stackoverflow, pomerne zname forko plne uzitecnych rad
https://stackoverflow.com/…apture-group
Parsovani url, to je podobne.

<?php
$str="member.php?action=bla&arg=2&test=15&schedule=16#test";
preg_match_all('/([^?&=#]+)=([^&#]*)/',$str,$m);
print_r($m);

//combine the keys and values onto an assoc array
$data=array_combine( $m[1], $m[2]);
print_r($data);
?>

3c. Dalsi link ze stack, a tam odkaz na demicko
https://regex101.com/r/kG5vF1/4 ;

Pomoci vyrazu
/(?:<html|(?<!^)\G)\h*(?:([^=\n\h]+)=(['"])((?:\\\2|(?!\2).)*)\2)?/gmi
Parsuji 
<html>
<html lang="en">
<html class="my-class">
<html class="my-class" lang="en">

No, a proc to neresis html parserem?
google = php html parse
http://php.net/…tml.php ;

$doc = new DOMDocument();
$doc->loadHTML("<html><body>Test<br></body></html>");
echo $doc->saveHTML();
?>

---

<?php
$doc = new DOMDocument();
$doc->loadHTML('<?xml encoding="UTF-8">' . $html);
// dirty fix
foreach ($doc->childNodes as $item)
    if ($item->nodeType == XML_PI_NODE)
        $doc->removeChild($item); // remove hack
$doc->encoding = 'UTF-8'; // insert proper
?>
Nahlásit jako SPAM
IP: 2001:718:2601:258:80c5:21...–
peter
~ Anonymní uživatel
3981 příspěvků
14. 8. 2017   #6
-
0
-

Jo, u toho 3c, tam maji vpravo pak ukazku, co je ve kterem match (match = array( 0=>... 1=>...))

Nahlásit jako SPAM
IP: 2001:718:2601:258:80c5:21...–
zak0
Newbie
14. 8. 2017   #7
-
0
-

Diky, nevedel jsem, ze nejaky google existuje.

Nahlásit jako SPAM
IP: 31.30.86.–
zak0
Newbie
14. 8. 2017   #8
-
0
-
Nahlásit jako SPAM
IP: 31.30.86.–
peter
~ Anonymní uživatel
3981 příspěvků
11. 9. 2017   #9
-
0
-

Jo, jenze strtolower se neda pouzit na utf, tam je mb_strtolower.

Nahlásit jako SPAM
IP: 193.84.207.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 19 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý