Autor Zpráva
Jen
Profil *
Dobrý den,

prosím vás o pomoc. Je dán nasledující text:

Polohovací zařízení: TouchPad, TabletPen.
Rozměry: 348 x 260 x 39.9 mm.
Hmotnost: 2.79 kg.

Požadováno je, aby slova před dvojtečkou byla zvýrazněna. tzn. před a za slovo vložit tag strong.
výsledek:

<strong>Polohovací zařízení:</strong> TouchPad, TabletPen.
<strong>Rozměry:</strong> 348 x 260 x 39.9 mm.
<strong>Hmotnost:</strong> 2.79 kg.

Jakým způsobem sestavit regulární výraz?

Předem Děkuji
jonge
Profil
Jen
Zkus toto:
$text = preg_replace("/(.+:)/", "<strong>$1</strong>", $text);
Nezkoušel jsem to, ale myslím že to pojede.
Jen
Profil *
Výsledek tvého výrazu $text = preg_replace("/(.+:)/", "<strong>$1</strong>", $text);

<strong>Polohovací zařízení: TouchPad, TabletPen.
Rozměry: 348 x 260 x 39.9 mm.
Hmotnost:</strong> 2.79 kg.

Ale díky. Tohoto se mi také podařilo dosáhnout. Jiná řešení? děkuji
koudi
Profil
$text = preg_replace("/(.+):/", "<strong>$1</strong>", $text);

jen drobný překlep
Jen
Profil *
Stejný efekt... ale díky.
Jen
Profil *
Možná jsem zapomněl uvést, že vstupní text může být i jiném tvaru. např.:

Acer Optical Mini Mouse.
Připojení: USB.
Počet tlačítek: 3.
Snímání pohybu: optické.
Vhodná pro pravou i levou ruku.
Barva černá.

-> cíl:

Acer Optical Mini Mouse.
<strong>Připojení:</strong> USB.
<strong>Počet tlačítek:</strong> 3.
<strong>Snímání pohybu:</strong> optické.
Vhodná pro pravou i levou ruku.
Barva černá.
tiso
Profil
stačí získať riadok textu a časť pred : (vrátane, ak sa tam nachádza) obaliť <strong>-om.
Jen
Profil *
O to se snažím, ale jakým způsobem toto provést v praxi?

Toto je dobrý základ, jen do něj zahrnout začátek řádku...
$text = preg_replace("/(.+:)/", "<strong>$1</strong>", $text);
Pavel Strejček
Profil
$text = preg_replace('/.+:/U', '<strong>$0</strong>', $text);
k
Profil *
preg_replace("/(\r|\n)([^:]+):/","$1<strong>$2:</strong>",$text);

Jde jak to mas odradkovane. Tohle je pro odradkovani pomoci entru. Jinak zmen to \r|\n na <br>.
llook
Profil
Plusko normálně hledá nejdelší shodu. Dejte za něj otazník a bude hledat nejkratší shodu:

$text = preg_replace("/(.+?:)/", "<strong>$1</strong>", $text);
k
Profil *
llook
Osobne bych uprednostnil zapis [^:]+
Hlavne ma problem ze zdroj muze vypadat tak jak pise o 5 prispevku vyse.

Mala uprava meho reg:
preg_replace("/( | )([^:]+:)/","$1<strong>$2</strong>",$text);

--proste poranu:)
Pavel Strejček
Profil
k
Jde jak to mas odradkovane.

Hledat odřádkování je v tomto případě zbytečné a navíc to nenajde shodu na prvním řádku. Metaznak tečky v regulárním výrazu symbolizuje všechny znaky kromě konce řádku, pokud neuvedeš modifikátor /s => /./s

preg_replace("/( | )([^:]+:)/","$1<strong>$2</strong>",$text);

Toto je zbytečně komplikované řešení.
k
Profil *
Pavel Strejček
Mas pravdu. Proste v patek me do 11 hodin rano radsi neposlouchejte:)
Jinak toto forum mi odstranilo nektere znaky,ktere tam nejsou, ale i s nima by to bylo spatne:)

Spravne je zapis llooka.
Pavel Strejček
Profil
k
Spravne je zapis llooka.

Ten je sice správně, ale správnější je ten můj, ušetří se jedny závorky. ;-)
Toto téma je uzamčeno. Odpověď nelze zaslat.