downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | conferences | my php.net

search for in the

mb_strrchr> <mb_strlen
[edit] Last updated: Fri, 17 May 2013

view this page in

mb_strpos

(PHP 4 >= 4.0.6, PHP 5)

mb_strposBir dizgenin içinde başka bir dizgeye ilk rastlanılan noktanın indisini döndürür

Açıklama

int mb_strpos ( string $samanlık , string $iğne [, int $konum [, string $kodlama ]] )

Bir dizgenin içinde başka bir dizgeye ilk rastlanılan noktanın indisini döndürür.

Karakter sayısına dayalı olarak güvenilir bir çok baytlı strpos() işlemi yürütür. iğne'nin ilk karakterinin yeri samanlık dizgesinin ilk karakterine göre hesaplanır. İlk karakterin indisi 0'dır.

Değiştirgeler

samanlık

İlk iğne'nin aranacağı dizge.

iğne

samanlık içinde ilki aranacak dizge.

konum

samanlık içinde aramanın başlatılacağı konum. Belirtilmezse 0 kullanılır.

kodlama

kodlama değiştirgesinde karakter kodlaması belirtilir. Belirtilmediği takdirde dahili karakter kodlaması kullanılır.

Dönen Değerler

İlk iğne'nin samanlık içinde bulunduğu yerin indisi ile döner. Eğer samanlık içinde iğne yoksa FALSE döndürür.

Ayrıca Bakınız

  • mb_strrpos() - Bir dizgenin içinde başka bir dizgeye son rastlanılan noktanın indisini döndürür
  • mb_internal_encoding() - Dahili karakter kodlamasını tanımlar/döndürür
  • strpos() - Bir alt dizgenin ilkinin konumunu bulur



mb_strrchr> <mb_strlen
[edit] Last updated: Fri, 17 May 2013
 
add a note add a note User Contributed Notes mb_strpos - [5 notes]
up
0
brendel at krumedia dot de
5 years ago
mb_strpos() used in a loop on a long string may become very slow even if you provide the $offset. Unlike strpos(), mb_strpos() has to skip the number of characters
 every call specified by $offset to get the real byte position used internally. (Whereas strpos can just add the offset.)

If your encoding is UTF-8 and you try to find only single characters with ordinal <= 127 you may still use strpos(), substr(), ... This works cause every byte of a UTF-8 sequence is >= 128.

Greetz maz
up
0
stestagg at talk21 dot com
6 years ago
sorry, my previous post had an error.  replace the 1000 with strlen($haystack) to handle strings longer than 1000 chars.

btw. This is an issue with the mbstring functions.  you can't specify the $encoding without specifying a $length, thus this reduces the functionality of mb_substr compared to substr
up
0
stestagg at talk21 dot com
6 years ago
a sample mb_str_replace function:

function mb_str_replace($haystack, $search,$replace, $offset=0,$encoding='auto'){
    $len_sch=mb_strlen($search,$encoding);
    $len_rep=mb_strlen($replace,$encoding);
   
    while (($offset=mb_strpos($haystack,$search,$offset,$encoding))!==false){
        $haystack=mb_substr($haystack,0,$offset,$encoding)
            .$replace
            .mb_substr($haystack,$offset+$len_sch,1000,$encoding);
        $offset=$offset+$len_rep;
        if ($offset>mb_strlen($haystack,$encoding))break;
    }
    return $haystack;
}
up
0
stestagg at talk21 dot com
6 years ago
It appears that the $offset value is a character count not a byte count.  (This may seem obvious but it isn't explicitly stated)
up
-1
zangaru at hotmail dot com
5 years ago
Hello,

Just replaced strpos() with mb_strpos() and now I am getting following error:

PHP Warning:  mb_strpos() [<a href='function.mb-strpos'>function.mb-strpos</a>]: Empty delimiter

PHP version: 5.2.3
OS: Win XP Prof
Web Server: IIS

I checked your bugs and mentioned that mb_string functions have been fixed as of 5.2.0 but it does not seem to be the case (Bug #39400).

My code:
==============================================

$charOut = mb_substr($tmpStr, $tmpKey[0], 1);
$posOut = mb_strpos($charList, $charOut);
if ($posOut !== FALSE) {
    // do something here
}

==============================================

 
show source | credits | stats | sitemap | contact | advertising | mirror sites