Jak vytvořit funkci preg_append – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Jak vytvořit funkci preg_append – PHP – Fórum – Programujte.comJak vytvořit funkci preg_append – PHP – Fórum – Programujte.com

 

fix0
Stálý člen
25. 9. 2019   #1
-
0
-

Ahoj všem,

znám funkce preg_match a preg_replace, ale neznám žádnou funkci která by se jmenovala preg_append. Tato funkce by měla dělat to, že pomocí regulárního výrazu najde v textu místo, za které umístí jiný text.

Příklad:

<?php

$string = "Doma na mě čeká s večeří.";
$pattern = "\i\n*[čeká]^\^$*\*Kristýna\i.$>*\b+další nesmysly :-D";
$výsledek = preg_append($pattern,$string);
echo $vysledek;

// result: Doma na mě čeká Kristýna s večeří.

?>

Neznáte někdo prosím něco takového? Když jsem to hledal, tak mi přišlo, že u několika tazatelů se to vyřešilo tak, že se ten regulární výraz udělal nějak speciálně a řešilo se to též pomocí preg_replace s tím, že to nahradilo "něco" tím "stejným + něco navíc".

Kontrétně mám klasické nahrazení a chci z toho udělat přilepení "custom HTML":

<?php
	$pattern = '[<]body[^>]*[>]';
	$replacement = 'CUSTOM HTML';
	echo preg_replace($pattern, $replacement, $buffer);
        // result aktuální  : CUSTOM HTML
        // result požadovaný: <body bla bla bla>CUSTOM HTML
?>
Nahlásit jako SPAM
IP: 31.30.173.–
Kit+15
Guru
25. 9. 2019   #2
-
+1
-
Zajímavé
fix +

#1 fix
dej si ten vzorek do závorek a pak ho použij v substituci.

Nahlásit jako SPAM
IP: 46.135.93.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
fix0
Stálý člen
25. 9. 2019   #3
-
0
-

#2 Kit
Myslíš to takto? Pokud ano, tak to nefunguje nechápu možná jak se ten odkaz dělá a jestli odkaz funguje tak, jak si myslím. Možná sem to měl udělat jinak, podle jedné dokumentace regex by to mělo fungovat.

 Kdybych tam měl jen drobnou chybu, oprav mi to prosím, nebo se z toho zblázním, doufám, že už nikdy takový složitější regex nebudu potřebovat, alespoň na hodně dlouho. :-)

<?php
	// příklad proměnné $buffer: "<html><body claas="neco">Hello world</body></html>"
	// stará deklarace: $pattern = "/[<]body[^>]*[>]/";
        $pattern = "(/[<]body[^>]*[>]/)$1"; // zde je stále chyba
	$replacement = 'CUSTOM HTML';
	echo preg_replace($pattern, $replacement, $buffer);
        // result aktuální  : <html>CUSTOM HTMLHello world</body></html>
        // result požadovaný: <html><body claas="neco">CUSTOM HTMLHello world</body></html>
?>
Nahlásit jako SPAM
IP: 31.30.173.–
Kit+15
Guru
25. 9. 2019   #4
-
0
-

#3 fix
Nemohu ti tady vysvětlovat, jak fungují regulární výrazy. Ani nechápu, proč se je snažíš v daném případě používat. HTML se do PHP nedává docela dlouho, měl by sis na to konečně zvyknout.

Ty závorky tam máš zcela chybně. Nechceš to raději zkusit bez regulárních výrazů prostým spojováním stringů?

Nahlásit jako SPAM
IP: 46.135.93.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
fix0
Stálý člen
26. 9. 2019   #5
-
0
-

#4 Kit
Nemohu ti tady vysvětlovat, jak fungují regulární výrazy.

To chápu, myslel jsem, že je to má nějak jednoduché řešení. Nicméně, byl bys tak hodný a mohl mi nějaký odkaz na ty substituce, které si myslel? Nemůžu to nikde najít, všude pod pojmem substituce nacházím něco jiného a nezdá se mi, že by cokoliv z toho mi mělo nějak pomoct.

Ani nechápu, proč se je snažíš v daném případě používat. HTML se do PHP nedává docela dlouho, měl by sis na to konečně zvyknout.

Ten ob_start v PHP si mi poradil ty? A abych to tím ob_startem mohl vyřešit potřebuji vyřešit toto. Jestli opět narážíš na HTML parser, tak jde o to, že prostě nechci využívat nějaké kvantum cizího kodu, kterému nerozumím, když se to dá vyřešit krátkým skriptem ob start + preg_replace.

Ty závorky tam máš zcela chybně.

To mi je jasný, vůbec nevím co dělám, protože nechápu cos myslel tím "dej si ten vzorek do závorek a pak ho použij v substituci."

Nechceš to raději zkusit bez regulárních výrazů prostým spojováním stringů?

Když mi řekneš něco blíže, jak by to mohlo fungovat, tak si o tom rád něco přečtu a zkusím to. Ale když si to snažím představit, tak spojování stringů znamená, že chci spojit dva stringy. Jenže, já znám podobu jen jednoho z nich, ten první je pokaždé jiný a já neznám jak vypadá. Není mi tedy jasné, jak se to bez regulárního výrazu dá řešit, když <body> tag vypadá pokaždé jinak.

Nahlásit jako SPAM
IP: 31.30.173.–
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, 57 hostů

Podobná vlákna

Jak vytvorit .dll — založil jelleeeen

Jak vytvořit databazi — založil da11niel

Jak vytvořit v PHP? — založil Daniel Herrmann

Jak vytvořit prstenec? — založil Vladimír

 

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