mb_ereg

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

mb_eregDüzenli ifadeyi çok baytlı karakter desteğiyle eşleştirir

Açıklama

int mb_ereg ( string $şablon , string $dizge [, array $sonuç ] )

Düzenli ifadeyi çok baytlı karakter desteğiyle eşleştirir.

Değiştirgeler

şablon

Aranacak şablon.

dizge

Şablonun aranacağı dizge.

sonuç

Eşleşen dizgeyi içeren dizge.

Dönen Değerler

Düzenli ifadeyi çok baytlı karakter desteğiyle çalıştırır ve eşleşme sağlanırsa 1 döndürür. İsteğe bağlı olan sonuç değiştirgesi belirtilmişse eşleşen alt dizge sonuç değiştirgesine yerleştirilip uzunluğu dönüş değeri olarak döndürülür. Boş dizgeyle eşleşme halinde işlev 1 değeriyle döner. Eğer bir eşleşme bulunamazsa veya bir hata oluşursa FALSEdöner.

Notlar

Bilginize:

Bu işlev karakter kodlaması olarak dahili kodlamayı veya mb_regex_encoding() işlevi tarafından belirtilen karakter kodlamasını kullanır.

Ayrıca Bakınız

  • mb_regex_encoding() - mbregex işlevleri için geçerli kodlamayı dizge olarak döndürür
  • mb_eregi() - Harf büyüklüğüne duyarsız çok baytlı düzenli ifade eşleştirmesi uygular

add a note add a note

User Contributed Notes 5 notes

up
1
Riikka K
3 years ago
While hardly mentioned anywhere, it may be useful to note that mb_ereg uses Oniguruma library internally. The syntax for the default mode (ruby) is described here:

http://www.geocities.jp/kosako3/oniguruma/doc/RE.txt
up
1
Anonymous
9 months ago
Old link to Oniguruma regex syntax is not working anymore, there is a working one:
https://github.com/geoffgarside/oniguruma/blob/master/Syntax.txt
up
0
mb_ereg() seems unable to Use "named sub
2 years ago
mb_ereg() seems unable to Use "named subpattern".
preg_match() seems a substitute only in UTF-8 encoding.

<?php

$text
= 'multi_byte_string';
$pattern = '.*(?<name>string).*';        // "?P" causes "mbregex compile err" in PHP 5.3.5

if(mb_ereg($pattern, $text, $matches)){
    echo
'<pre>'.print_r($matches, true).'</pre>';
}else{
    echo
'no match';
}

?>

This code ignores "?<name>" in $pattern and displays below.

Array
(
    [0] => multi_byte_string
    [1] => string
)

$pattern = '/.*(?<name>string).*/u';
if(preg_match($pattern, $text, $matches)){

instead of lines 2 & 3
displays below (in UTF-8 encoding).

Array
(
    [0] => multi_byte_string
    [name] => string
    [1] => string
)
up
0
pressler at hotmail dot de
5 years ago
Note that mb_ereg() does not support the \uFFFF unicode syntax but uses \x{FFFF} instead:

<?PHP

$text
= 'Peter is a boy.'; // english
$text = 'بيتر هو صبي.'; // arabic
//$text = 'פיטר הוא ילד.'; // hebrew

mb_regex_encoding('UTF-8');

if(
mb_ereg('[\x{0600}-\x{06FF}]', $text)) // arabic range
//if(mb_ereg('[\x{0590}-\x{05FF}]', $text)) // hebrew range
{
    echo
"Text has some arabic/hebrew characters.";
}
else
{
    echo
"Text doesnt have arabic/hebrew characters.";
}

?>
up
0
Jon
8 years ago
Hebrew regex tested on PHP 5, Ubuntu 8.04.
Seems to work fine without the mb_regex_encoding lines (commented out).
Didn't seem to work with \uxxxx (also commented out).

<?php
echo "Line ";
//mb_regex_encoding("ISO-8859-8");
//if(mb_ereg(".*([\u05d0-\u05ea]).*", $this->current_line))
if(mb_ereg(".*([א-ת]).*", $this->current_line))
{
    echo
"has";
}
else
{
    echo
"doesn't have";
}
echo
" Hebrew characters.<br>";   
//mb_regex_encoding("UTF-8");
?>
To Top