Starší komentáře ke článku: Vyhledávání v textu pomocí regulárních výrazů

Zpět na článek | Úvodní stránka Interval.cz

Avatar

Autor komentáře: Jaro

Datum vložení: 8.12.2004 18:52:15

Pekna a celkom prakticka myslienka. Ocenujem to ze ste sa to snazili zapuzdrit cele do triedy. Osobne totiz neznasam komentare typu "na co je v PHP objektove programovanie ...". Kto to tvrdi nedodi si na koniec nosa alebo nikdy neprogramoval komercne resp. pod casovym tlakom .

Avatar

Autor komentáře: Jarda_N

Datum vložení: 11.12.2004 6:45:23

Jo, uzitecny serialek - chvala autorovi.

co se tyce te ukazky <I>Email Extractor</I>, opravdu (jak autor deklaroval) nefunguje dokonale - myslim ale ze je vhodnejsi pro takove utilitky javascript, jako třeba tady <a href='http://interval.cz/__redirect/redirect.asp?what=interval_discussion&url=http://home.tiscali.cz/intermark/extraktor.html' target='_blank'>http://home.tiscali.cz/intermark/extraktor.html</a>

Avatar

Autor komentáře: PeterS

Datum vložení: 8.12.2004 23:15:40

Je to pekne, na nete najdem mnozstvo prikladov, ako vyvhladat v texte maily, url adresy, ale prave sa trapim s "banalnym" problemom. Potrebujem ucesat text (zadavany uzivatelom) takym sposobom aby nahradil vsetky 3a viackrat po sebe iduce znaky prave za jeden taky znak. napr slovo heeeeeeeej => hej. Ak viete pomoct, pomozte, dakujem

Avatar

Autor komentáře: CHe

Datum vložení: 9.12.2004 11:52:03

Pouzi RE s odkazom na matchnuty substring (backreference):

$text = 'heeeeeeeejaaaaaheej';

$text = preg_replace('/(.)\1+/', '$1', $text); // 2 a viac opakovani
$text = preg_replace('/(.)\1{2,}/', '$1', $text); // 3 a viac opakovani

var_dump($text); // string(7) "hejahej"

<a href='http://interval.cz/__redirect/redirect.asp?what=interval_discussion&url=http://www.php.net/manual/en/reference.pcre.pattern.syntax.php' target='_blank'>http://www.php.net/manual/en/reference.pcre.pattern.syntax.php</a>
<a href='http://interval.cz/__redirect/redirect.asp?what=interval_discussion&url=http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php' target='_blank'>http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php</a>

Avatar

Autor komentáře: Kicko

Datum vložení: 10.12.2004 10:07:07

Doplnenie: ereg(i) je niekoľkonásobne pomalší ako preg_match (prebratý z perlu).

Avatar

Autor komentáře: Vilém Málek

Datum vložení: 10.12.2004 11:47:39

Jenže tohle je článek o POSIX regulárních výrazech, nikoli o perl compatible výrazech, takže preg_match() je vám vcelku k ničemu ;-)

Avatar

Autor komentáře: Saggi

Datum vložení: 17.12.2004 19:30:14

Chtel bych zmenit text ve stringu tak ze misto **1** se obevi <img src="<a href='http://interval.cz/__redirect/redirect.asp?what=interval_discussion&url=http://smiles.zy.cz/1.gif">' target='_blank'>http://smiles.zy.cz/1.gif"></a>
to by bylo jednoduche ale jak udelat aby se to delalo automaticky pri pouziti jakehokoliv cisla ???
treba **151** = <img src="<a href='http://interval.cz/__redirect/redirect.asp?what=interval_discussion&url=http://smiles.zy.cz/151.gif">' target='_blank'>http://smiles.zy.cz/151.gif"></a>
diky za radu

Avatar

Autor komentáře: Bochi

Datum vložení: 21.12.2004 23:26:07

Co třeba:

$retezec_novy = preg_replace('(\*){2}([0-9]+)(\*){2}', '<img src="<a href='http://interval.cz/__redirect/redirect.asp?what=interval_discussion&url=http://smiles.zy.cz/$2.gif">'' target='_blank'>http://smiles.zy.cz/$2.gif">'</a>, $retezec_puvodni);

Avatar

Autor komentáře: Miroslav Pecka

Datum vložení: 22.12.2004 18:06:07

Dobrá myšlenka, ale
a) pokud pouzivate PCRE funkci
preg_replace(), je třeba uzavřít reg. výraz do delimiters (/)
b) stačí jen jeden subvýraz (pro číslo samotné)
Pak bude tedy příklad takto:
$retezec_novy = preg_replace('/\*{2}([0-9]+)\*{2}/',
'<img src="<a href='http://interval.cz/__redirect/redirect.asp?what=interval_discussion&url=http://smiles.zy.cz/$1.gif">'' target='_blank'>http://smiles.zy.cz/$1.gif">'</a>, $retezec_puvodni);

Pokud byste chtěl použít POSIX funkci (o kterých je tento seriál), bude příklad:
$retezec_novy = ereg_replace('\*{2}([0-9]+)\*{2}',
'<img src="<a href='http://interval.cz/__redirect/redirect.asp?what=interval_discussion&url=http://smiles.zy.cz/\\1.gif">'' target='_blank'>http://smiles.zy.cz/\\1.gif">'</a>, $retezec_puvodni);

Avatar

Autor komentáře: Borek

Datum vložení: 4.1.2005 8:23:03

Mam text: Jaja Paja (Admin), Nekdo Jmeno Prijmeni (clovek s druhy jmenem), Nekdo (clovek s jednim jmenem), Janos Petr (osoba)....

Pripadne text bez zavorek: Jaja Paja, Nekdo Jmeno Prijmeni, Nekdo, Janos Petr

A chci z toho udelat: <a href="hledej.php?osobu=Jaja Paja">Jaja Paja</a> (Admin), <a href="hledej.php?osobu=Nekdo Jmeno Prijmeni">Nekdo Jmeno Prijmeni</a> (clovek s druhy jmenem), <a href="hledej.php?osobu=Nekdo">Nekdo</a> (clovek s jednim jmenem), <a href="hledej.php?osobu=Janos Petr">Janos Petr</a> (osoba)....

Avatar

Autor komentáře: Michal Švarc

Datum vložení: 20.5.2006 0:22:54

Potřeboval bych nahradit část textu jiným, ale zachovat v části nahrazeného původní nalezený text. [b]Lze to?[/b] [b][i]Zkoušel jsem tohle[/i][/b] (a to samo nelze): $IPkode = str_replace('[0-9]{1,3}', '<FONT CLASS=PocetText>[0-9]{1,3}</FONT>', $cisloIP); [i]Díky za jakoukoliv radu[/i]

Zpět na článek | Úvodní stránka Interval.cz