melior
22.12.2010, 11:11:44
Witam,
$regex = "/\b(.*).pl\b/i";
Funkcja ma wyłapywać z tekstu domeny .pl i niby wszystko działa oprócz sytuacji, gdy pierwsza litera należy do polskiego alfabetu, wtedy też ją ucina.
Np.
Dla:
żaba.pl
Otrzymam
aba.pl
Ale gdy mam:
ażaba.pl
Otrzymam
ażaba.pl
Any help

?
vermis
22.12.2010, 12:19:06
daj przykład tekstu i popraw wyrażenie, bo '.'(kropka) to znak specjalny.
melior
22.12.2010, 12:36:25
onet.pl 10-11-27 17:03 10-12-11 17:03 10-12-16 17:03
wp.pl 10-11-27 17:04 10-12-11 17:04 10-12-16 17:04
interia.pl 10-11-27 17:04 10-12-11 17:04 10-12-16 17:04
pwr.wroc.pl 10-11-27 17:04 10-12-11 17:04 10-12-16 17:04
żagań.pl 10-11-27 17:04 10-12-11 17:04 10-12-16 17:04
vermis
22.12.2010, 13:51:49
Zrobiłem szybki test i działa:
$string = "onet.pl 10-11-27 17:03 10-12-11 17:03 10-12-16 17:03
wp.pl 10-11-27 17:04 10-12-11 17:04 10-12-16 17:04
interia.pl 10-11-27 17:04 10-12-11 17:04 10-12-16 17:04
pwr.wroc.pl 10-11-27 17:04 10-12-11 17:04 10-12-16 17:04
żagań.pl 10-11-27 17:04 10-12-11 17:04 10-12-16 17:04";
foreach ($a as $line) {
//$regex = "/^(.*)\.pl/i";
$regex = "/\b(.*)\.pl\b/i";
echo $matches[0] . "<br/>"; }
wynik:
onet.pl
wp.pl
interia.pl
pwr.wroc.pl
żagań.pl
melior
22.12.2010, 16:06:26
A mi niestety nie.
Można sprawdzić samemu.
Link do strony<?php
if (!empty($_POST['add'])){ if ($_POST['text']){
$text = $_POST['text'];
$regex = "/\b(.*)\.pl\b/i";
if ($result3){
echo $matches3[0]."<br />"; }
}
}
}
<form method="POST" action="">
<center>
<textarea name="text" style="width:640px; height:240px;"></textarea><br />
<input type="submit" name="add" value="dodaj">
</center>
</form><br />';
?>
Quadina
22.12.2010, 21:09:22
Z tego co widzę, to jest kwestia błędu w jakiejś tam bibliotece w PHP 5.2.x, problem został rozwiązany w 5.2.8. Możesz w ramach poprawienia tego błędu u siebie użyć po prostu preg_match_all(), ewentualnie możesz potraktować tekst iconv() z UTF-8//IGNORE i też powinien dać odpowiedni efekt. Bierze się to z faktu, że polskie znaki nie są kodowane jako sam znak, tylko jako dwa znaki zwykle zapisywane jako ~o = ó lub ~a => ą. zatem tylda na początku tekstu podawanego do preg_match zadziała jak znak specjalnie (nie pamiętam co oznaczający) i wycięty z wyniku.
mieszkos
22.12.2010, 21:14:09
preg_match ma problemy z UTF8.. ;>
http://gynvael.coldwind.pl/?id=360