Autor | Zpráva | ||
---|---|---|---|
radozaj Profil |
#1 · Zasláno: 12. 11. 2007, 16:40:51 · Upravil/a: radozaj
takto vyzerá reťazec na začiatku:
---------------------------------------------------------------------- | $retazec = "Ahoj, | práve píšem nejaký text. | | Mobil: to je dobrá vec. | | Auto: to je drahá vec."; ---------------------------------------------------------------------- A potrebujem z toho reťazcu spraviť niečo takéto: ---------------------------------------------------------------------- | $retazec = "Ahoj, | práve píšem nejaký text. | | <h4>Mobil:</h4> to je dobrá vec. | | <h4>Auto:</h4> to je drahá vec."; ---------------------------------------------------------------------- Ako to spraviť? Tento príkaz nestačí, lebo text navyše vymaže: $retazec = ereg_replace(" (.*):","<h4></h4>",$retazec); |
||
DFly Profil |
#2 · Zasláno: 13. 11. 2007, 01:15:10
$retazec = ereg_replace("(.*):","<h4></h4>",$retazec);
to je prece jasny, kdyz to nahradis prazdnymy tagy podivej se do manualu |
||
djlj Profil |
#3 · Zasláno: 13. 11. 2007, 01:34:52
$retazec = preg_replace("(.*):","<h4>\\1</h4>",$retazec);
|
||
loyza Profil |
#4 · Zasláno: 13. 11. 2007, 10:54:03
Tak já se přidám a také nabídnu řešení problému:
|
||
tajny spion Profil |
#5 · Zasláno: 13. 11. 2007, 11:04:24 · Upravil/a: tajny spion
DFly, djlj, loyza
Mám něco podobného... mám mrtě dlouhý soubor plný textu a potřebuji, vždy každé určité slovo zvýraznit. Jde to i jinak než ručně? Myslím tímto způsobem... moc tomu totiž nerozumím :( PS: Řekněme, že to slovo je třeba "Popis" |
||
djlj Profil |
#6 · Zasláno: 13. 11. 2007, 11:14:18
$text=str_replace("Popis", "<b>Popis</b>", $text);
|
||
radozaj Profil |
#7 · Zasláno: 13. 11. 2007, 17:09:54
Ani jedno mi nefunguje poriadne tak, ako by malo. Potrebujem najskôr nájsť text, to je text od dvoch prechodov na nový riadok, až po prvú dvojbodku. A nahradiť ho hľadaným textom, ktorý je medzi <h4> </h4>. Čiže: niečo ako $retazec = ereg_replace("\r\n\r\n(.*):","<h4>\1</h4>",$retazec);
ale nie je to ono, pretože to označuje až po poslednú dvojbodku.... Ako teda? |
||
Alphard Profil |
#8 · Zasláno: 13. 11. 2007, 17:13:48 · Upravil/a: Alphard
radozaj
já bych měl ještě poznámku k předchozímu tématu (je zamčené) možná by byla vhodnější funkce nl2br() |
||
radozaj Profil |
#9 · Zasláno: 13. 11. 2007, 17:27:48 · Upravil/a: radozaj
Alphard
možná by byla vhodnější funkce nl2br() Áno, je lepšia, ale ja by som to potreboval práve na tento prípad, keď z textu hľadám "\r\n\r\n text :" a nahradzujem "<h4> text: </h4>" Problém je však v tom, že mi to berie až po poslednú dvojbodku v texte, a ja by som chcel, aby to bral len po prvú dvojbodku od tých dvoch prechodov na nový riadok. Takže $retazec = ereg_replace("\r\n\r\n(.*):","<h4>\\1:</h4>",$retazec);nefunguje podľa mojich predstáv a $retazec = ereg_replace('[[:space:]]([^[:space:]]*):',"<h4>\\1:</h4>",$retazec);to robí troška inú vec: označuje slovo iba jedlo a to také slovo, čo je pred dvojbodkou, takže ani to nie. Poradíte ešte iný spôsob? |
||
radozaj Profil |
#10 · Zasláno: 13. 11. 2007, 17:33:26
oprava jedlo = jedno
|
||
radozaj Profil |
#11 · Zasláno: 13. 11. 2007, 17:55:11 · Upravil/a: radozaj
Alebo mi aspoň napíšte, kde si prečítať návod čo tie znaky znamenajú: [:space:] , (.*) , \\1 ...
Približne viem, ale... radšej to vidieť. |
||
Alphard Profil |
#12 · Zasláno: 13. 11. 2007, 18:00:17
http://www.regularnivyrazy.info/shrnuti-syntaxe.html
ale nevím, jestli to povede k řešení, kdybych ho znal, tak ti ho napíši |
||
tajny spion Profil |
#13 · Zasláno: 13. 11. 2007, 19:16:33
djlj
Ty krávo vono to fakt jede! (Respekt!) Btw s tím souvisí moje druhá otázka: Teď musím mít tím pádem obsah stránky (v main sloupci) v nějaké proměnné řekněme v $text, že mám pravdu... vypadá to tedy nějak takto: <?php $text = 'nějaký dlouhý obsah stránky obsahující slovo silnice, které ztučníme'; $text = str_replace("silnice", "<b>silnice</b>", $text); if (!$text) /* to mě jen tak napadlo zkontrolovat - možná je to blbost - pls názor */ echo "Litujeme, ale stránku nelze zobrazit"; else echo $text; ?> Teď k výše zmiňované otázce: zaindexují vyhledávače takový text ($text), když ho budu vypisovat z DB? |
||
djlj Profil |
#14 · Zasláno: 13. 11. 2007, 20:50:31 · Upravil/a: djlj
Teď musím mít tím pádem obsah stránky (v main sloupci) v nějaké proměnné
Je tak. to mě jen tak napadlo zkontrolovat - možná je to blbost - pls názor Když chceš… zaindexují vyhledávače takový text ($text), když ho budu vypisovat z DB? Vyhledávačům je stejně jako uživatelům šumafuk, jestli bereš data z databáze, ze souboru nebo třeba z Marsu. Navíc to ani nepoznají. |
||
loyza Profil |
#15 · Zasláno: 13. 11. 2007, 21:59:37 · Upravil/a: loyza
Hoši, možná by neškodilo kdybyste si ke své otázce založili vlastní téma. V tuhle chvíli už se tady motají tři témata dohromady.
Zpátky k původnímu tématu. Podle původního příkladu to nevypadalo, že před dvojtečkou může být slov více ;) Tak jsem zkusil tohle, mohlo by to fungovat. Na tom řetězci co jsi sem poslal to jede.
|
||
tajny spion Profil |
#16 · Zasláno: 14. 11. 2007, 10:16:30
djlj
<OT> Vyhledávačům je stejně jako uživatelům šumafuk, jestli bereš data z databáze, ze souboru nebo třeba z Marsu. Navíc to ani nepoznají. Takže vyhledávač si zobrazí stránku stejně jako uživatel, tím pádem ten text bude vidět? Mám totiž pocit, že jsem tu někde zaslechl, že když jsou na webu texty brány z DB, vyhledávač ne nezaregistruje. Rešení: Redakční systém - bohužel nevím co to je PS: Jaký je rozdíl mezi RS (Redakční systém) a RSS? |
||
lagin Profil |
#17 · Zasláno: 14. 11. 2007, 10:25:37
Vyhledavač zaregistruje kód, který je vygenerován a tudíž vydí to co uživatel. Nikdo, ani vyhledavače nevidí tvé zdrojové kódy v PHP, či jakémkoli jiném jazyce. Prostě vždy soubory projdou interprtem a ty vydíš, jen výsledná data.
Redakční systém. To je jakýsi ucelený web, kde jsou různé sekce, např, fórum, správa uživatelů, fotogalerie, cokoli chceš. Je jich na netu spousta free. Technologie RSS umožňuje uživatelům Internetu přihlásit se k odběru novinek z webu, který nabízí RSS zdroj. Tudíž to není RS. Text o RSS převzat z wiki. |
||
djlj Profil |
#18 · Zasláno: 14. 11. 2007, 10:36:55
tajny spion
To by byla pěkná bezpečnostní chyba :). To by se hnedka všichni maskovali jako vyhledávač, aby se dostali lidem do databáze ;). Mám totiž pocit, že jsem tu někde zaslechl, že když jsou na webu texty brány z DB, vyhledávač ne nezaregistruje. V tom případě by nebyla dohledatelná drtivá většina stránek. |
||
tajny spion Profil |
#19 · Zasláno: 14. 11. 2007, 12:55:26
djlj
ok, Dik lagin Takže RS je něco jako zjednodušená verze aktuálního webu? Bez všech možných blbostí? Nebo k čemu to tedy je? |
||
lagin Profil |
#20 · Zasláno: 14. 11. 2007, 13:04:42
tajny spion: za RS povazuji jakykoli rozsahlejsi web. :) i kdyz treba mini RS.
|
||
radozaj Profil |
#21 · Zasláno: 14. 11. 2007, 15:38:48 · Upravil/a: radozaj
Alphard
Vďaka za tú stránku, aj keď tam úplne všetky výrazy nie sú, ale stačí mi to. loyza Vďaka za to druhé riešenie, ale zistil som, že radšej to dám od počtu prechodov na nový riadok 1 a viac. A navyše ešte tam dá do nahraďovaného na začiatok prechod na nový riadok, takže trochu som to upravil: $retazec = ereg_replace('[[:cntrl:]]+([^[:cntrl:]]*):','\n<h4>\1:</h4>',$retazec); Už to skoro je ono, ale ešte sa stáva, že berie až tú druhú dvojbodku, napr. keď mám takéto niečo: ----------------------------------- | $string = "Text text text. | | | | mobil: to je: dobra vec."; | ----------------------------------- spraví toto: ---------------------------------------- | $string = "Text text text. | | | | <h4>mobil: to je:</h4> dobra vec."; | ---------------------------------------- Takže to berie až po druhú dvojbodku. Neviem ako by sa to dalo spraviť, azda tak, že by ten ľubovolný znak medzi x prechodmi na nový riadok (však nie 0) a dvojbodkou nesmel obsahovať dvojbodku? No však neviem, ako to opraviť.... |
||
radozaj Profil |
#22 · Zasláno: 14. 11. 2007, 16:04:14 · Upravil/a: radozaj
loyza
Tak zapojil som hlavu, použil som aj tú stránku, čo mi ukázal Alphard a nakoniec to konečne funguje. Príkaz vyzerá takto: $retazec = ereg_replace('[[:cntrl:]]+([^[:cntrl:]:]+):','\n<h4>\\1:</h4>',$retazec); all vďaka všetkým, čo ste sa mi snažili pomôcť, už to konečne funguje podľa mojich predstáv. |
||
loyza Profil |
#23 · Zasláno: 14. 11. 2007, 21:36:07
Proč mi tam to lomítko nezůstalo a tobě jo? Já ho tam měl taky. :( Bacha na to, pokud ten regulární výraz dáváš do uvozovek tak tam patří dvě lomítka a když to dáš do apostrofů tak tam patří lomítka dvě. Mluvím o těch obrácených lomítkách v tom replacementu.
|
||
radozaj Profil |
#24 · Zasláno: 15. 11. 2007, 14:51:14 · Upravil/a: radozaj
loyza
používam úvodzovky a dve spätné lomítka a funguje to. Tie lomítka aj mne nejak bugujú, ale proste som napísal 4 lomíka a ono to zobrazilo 2. |
||
Časová prodleva: 16 let
|
0