Re: [Linux-programlama] php:string icinde arama[belki regex]

---------

New Message Reply About this list Date view Thread view Subject view Author view Attachment view

From: Serdar KÖYLÜ (serdarkoylu@fisek.com.tr)
Date: Thu 07 Apr 2005 - 12:14:26 EEST


Selamlar..

Büyük ihtimalle,

strpos(string, pattern);

Daha hızlı olacaktır. Bu durumda,
$text = "deneme baskadenemebu,birdenemedaha,dahadeneme!notry";
$pattern = "deneme";
$last = 0;
$pos = strpos($text, $pattern, $last);
$accept = "ABCÇDEFGĞHIİJKLMNOÖPRSTUÜWVXYZ"; // Küçük harfleri ekleyin..

while ($pos !== False) {
     $start_pos = 0;
. for($i = $pos; $i > 0; $i -= 1) {
. $chr = substr($text, $i, 1);
. if (strstr($accept, $chr) === False) {
. $start_pos = $i;
. break;
. }
. }
. $stop_pos = strlen($text);
. for($i = $pos; $i < strlen($text); $i += 1) {
. $chr = substr($text, $i, 1);
. if (strstr($accept, $chr) === False) {
. $stop_pos = $i;
. break;
. }
. }
. $word = substr($text, $start_pos, $stop_pos - $start_pos);
. $warray[$wlen] = $word;
. $wlen += 1;
. $pos = strpos($text, $pattern, $last);
}

gibi bir kodla bu sorun çözülebilir (yukarıdaki kodu denemedim, ezbere
yazdım biraz) sanıyorum. REGEX vs. yöntemlerinden daha hızlı olması
mümkündür. Bir sorun, strstr($accept, $chr) olayı olabilir. Ben,
isalpha() nın veya isupper()/islower()'in PHP karşılığı var mı
bilmiyorum, bir bakmak lazım.. Eğer varsa bu hem hız hem de daha
garantili yoldan kelimeyi çıkarmayı sağlayacaktır. BU yöntemle her dil
için kelime çıkarımı bu tür kodla sağlanamaz..

> bu durumda kelimeler ; - . , ! gibi ifadelerle ayrilmis ise ne olacak? Sorun
> olur... Regex ile bir cozum sanirim uygun.. Yardiminiz icin tesekkur ederim

Saygı ve sevgiler..

_______________________________________________
Linux-programlama mailing list
Linux-programlama@liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-programlama


New Message Reply About this list Date view Thread view Subject view Author view Attachment view

---------

Bu arsiv hypermail 2.1.2 tarafindan uretilmistir.