Stránka 1 z 1

PHP pomoc s regexem

Napsal: 28 dub 2011 00:27
od kennyz
Zdravim,
už několik hodin hledám a zkouším a stále nic, co by mi fungovalo podle toho co potřebuju :(

Mám jednoduše nějaký string např.:

Kód: Vybrat vše

$text = "Nějaký *tučný* text <pre class="neco">...</pre> další *tučný* text";


a teď :D ... potřebuju přes regex (nebo jakkoli, hlavně né cyklus), udělat to, že se vezme celý text, krom toho <pre>..</pre> a kde je *tučný* tak nastaví na <strong>tučný</strong>.

Problém je, že já tohle mám, ale zasahuje mi to i do toho obsahu <pre> což nechci a to nevim jak udělat..

současný regex a vlastně celej vstup, mám jako:

Kód: Vybrat vše

$text = "vstupní dlouhý text";
$text = preg_replace('/\*(.+)\*/', '<strong>$1</strong>', $text);


Tak doufám, že se někdo najde, kdo by věděl :smile:

Re: PHP pomoc s regexem

Napsal: 28 dub 2011 08:35
od CZechBoY
co třeba přes Str_replace přehodit <pre za <strong ?
$pattern='/\*(.+)\*/' tim zjistíš co je mezi hvězdičkama *zjišťuji*

$pattern='/<pre.*>(.+)<\/pre>/' ti zjistí co je uvnitř tagu PRE: <pre..>zjišťuji tento text</pre>

Re: PHP pomoc s regexem

Napsal: 28 dub 2011 10:09
od kennyz
To vim, ale na <pre...</pre> nemůžu sáhnou ani nijak měnit, prostě potřebuju nějak vybrat vše, mezi záčátkem až do značky "<pre class=" a tam změnit to co jsem psal, čili *bold* za <strong>bold</bold>

to samé potom na konci, od konce </pre> až do opet zacátku <pre class= a na konec od konce </pre> do konce stringu

mám treba:

Kód: Vybrat vše

$string = "
  začátek *bold* něco
  <pre class="xy">neco</pre>
  další text *bold* něco
  <pre class="xy">neco</pre>
  konečný text *bold* a tečka.
";


a nějak nemůžu přijít na to, aby to zaměnilo vsechny *bold* v textu za <strong>bold</strong> a zárověn preskakovalo vsechno mezi zanačkama <pre .. </pre> včetně značek

Tohle řešim, takže nějak asi neruzumim, proč bych měl zjistovat, co je mezi <pre>, když to mi bude kničemu :))

--- Doplnění předchozího příspěvku (Čtv Dub 28, 2011 1:37 pm) ---

To nikdo neví?? :(

Re: PHP pomoc s regexem

Napsal: 28 dub 2011 14:25
od CZechBoY
jsem snad něco psal ne?
$pattern='/*(.+)*/' to ti vrátí text mezi hvězdičkama *text*
$pattern='/(.+)<pre class=.+>.+<\/pre>(.+)/' ti vrátí co je před PRE a co je za PRE

Re: PHP pomoc s regexem

Napsal: 28 dub 2011 15:25
od kennyz
Aha, jsem to nějak zkoušel podle toho cos napsal a nějak to nejde nebo nechapu jak by to mělo fungovat no :/

můžeš mi to prosímtě ukázat na tom prvotním příkladu stringu? :)

Re: PHP pomoc s regexem

Napsal: 29 dub 2011 20:24
od CZechBoY
ty potrebujes ziskat cisty text bez <pre>...</pre> aprehodit z * na <strong>?

tak jedine cyklus, jinak to asi nepujde :(

nebo ten pre je vzdy stejny? pak muzes pouzit Str_Replace a vyhodit ten pre a mas to pak lehke

Re: PHP pomoc s regexem

Napsal: 30 dub 2011 01:13
od kennyz
Jinak jo, jak si psal, získat vše krom <pre>...</pre> z textu a nahradit *...* za <strong>...</strong>

Ja uz nemam silu to dal resit, jsem to vyresil tak, že mam misto *bold* toto strong->text×
sice to bere i obsah <pre>, ale tento string tam nebude snad