Eregi probleem

Overzicht Reageren

- SanThe -

- SanThe -

31/07/2010 18:10:21
Quote
Quote:
This function has been DEPRECATED as of PHP 5.3.0. Relying on this feature is highly discouraged.


Omdat eregi() uit de tijd is moet dit wat anders worden.
Weet iemand wat dat moet worden?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if (eregi('^(' . $value . ')(;q=[0-9]\\.[0-9])?$', $this->browser_languages[$i]))
?>
 
PHP hulp

PHP hulp

09/02/2012 05:53:00
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Karl Karl

Karl Karl

31/07/2010 18:11:14
Quote
Voorbeeldstrings?
 
Noppes Homeland

Noppes Homeland

31/07/2010 18:23:26
Quote
Er staat op php.net toch ook een verwijzing naar de preg functie(s)

http://www.php.net/manual/en/ref.pcre.php
 
- SanThe -

- SanThe -

31/07/2010 18:32:13
Quote
@Noppes: Ik heb helemaal géén verstand van dit soort expressies.

@Karl:
ar([-_][[:alpha:]]{2})?|arabic
bg|bulgarian
pt[-_]br|brazilian portuguese
ca|catalan
cs|czech
da|danish
de([-_][[:alpha:]]{2})?|german

Toevoeging op 31/07/2010 18:37:23:

Noppes Homeland op 31/07/2010 18:23:26:
Er staat op php.net toch ook een verwijzing naar de preg functie(s)

http://www.php.net/manual/en/ref.pcre.php


Is er niet gewoon een vervanger voor, die exact hetzelfde doet?
 
Karl Karl

Karl Karl

31/07/2010 19:26:54
Quote
Nee, d'r is niet een vervanger.
Maar zo te zien moet jou regexen het opzich wel aardig goed doen.
Je kunt eens testen met http://gskinner.com/RegExr/
 
- SanThe -

- SanThe -

31/07/2010 19:29:49
Quote
Hij doet het ook prima, maar ik krijg constant die meldingen.

Quote:
Deprecated: Function eregi() is deprecated in .....

en
Quote:
Deprecated: Function ereg_replace() is deprecated in ......


En die wil ik eruit halen.

Quote:
Ik heb bovenstaand vervangen door substr($value, 0, 2) omdat daar de bedoelde data te vinden is. Maar er zitten er nog meerderde in dat script.


Dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$string
= ereg_replace(' +', ' ', trim($string));
?>

kan toch ook gewoon met een str_replace()?
Gewijzigd op 31/07/2010 19:33:41 door - SanThe -
 
Karl Karl

Karl Karl

31/07/2010 19:32:55
Quote
SanThe Nvt op 31/07/2010 19:29:49:
Hij doet het ook prima, maar ik krijg constant die meldingen.

Quote:
Deprecated: Function eregi() is deprecated in .....

en
Quote:
Deprecated: Function ereg_replace() is deprecated in ......


En die wil ik eruit halen.

Quote:
Ik heb bovenstaand vervangen door substr($value, 0, 2) omdat daar de bedoelde data te vinden is. Maar er zitten er nog meerderde in dat script.


Wat zijn nou de strings die je probeert te matchen en wat wil je d'r uit halen?
 
Joren de Wit
Beheerder

Joren de Wit

31/07/2010 19:34:15
Quote
In een preg_match() zullen de reguliere expressies die je nu in ereg() gebruikt waarschijnlijk ook wel werken. Let op dat je in preg_match() alleen delimiters aan je regex toe moet voegen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
/ar([-_][[:alpha:]]{2})?|arabic/i

De toevoeging i is een pattern modifier die zorgt dat preg_match() hetzelfde doet als eregi() ipv ereg() :-)

ps. Normaal gesproken zijn deze regexen natuurlijk niet zomaar 1-op-1 over te nemen, maar bij deze klopt de syntax volgens mij nog wel.
Gewijzigd op 31/07/2010 19:35:23 door Joren de Wit
 
- SanThe -

- SanThe -

31/07/2010 19:38:12
Quote
Dit zijn de $value's:
ar([-_][[:alpha:]]{2})?|arabic
bg|bulgarian
pt[-_]br|brazilian portuguese
ca|catalan
cs|czech
da|danish
de([-_][[:alpha:]]{2})?|german

En er wordt gezocht naar ar of bg of ca, etc, dus dat zijn steeds de eerste twee characters. Bovenstaand probleem heb ik zo opgelost:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if ((substr($value, 0, 2) == $this->browser_languages[$i])
?>

Dat lijkt mij voldoende te werken.


Ik heb nu weer een nieuwe:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$string
= ereg_replace(' +', ' ', trim($string));
?>

Maar dat kan toch ook gewoon met een str_replace()?
Gewijzigd op 31/07/2010 19:39:16 door - SanThe -
 
Joren de Wit
Beheerder

Joren de Wit

31/07/2010 19:39:49
Quote
Niet helemaal, want die regex matcht ook 3 of meer spaties en daar houd str_replace() geen rekening mee...
 
Karl Karl

Karl Karl

31/07/2010 19:41:25
Quote
Als je de eerste twee letters alleen wilt, dan is die substr voldoende.
 
- SanThe -

- SanThe -

31/07/2010 19:52:04
Quote
Blanche PHP op 31/07/2010 19:39:49:
Niet helemaal, want die regex matcht ook 3 of meer spaties en daar houd str_replace() geen rekening mee...


Hoe is dat dan te vervangen?

Dat moet dan dit worden lijkt mij.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
// oud
$string = ereg_replace(' +', ' ', trim($string));
// nieuw
$string = preg_replace('/\s\s+/', ' ', trim($string));
?>



Ik heb er weer een gevonden waar ik niet mee uit de voeten kan?
Iemand? Dit is een ereg(), hoe is dit te vervangen?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if (ereg('^[0-9]$', $char))
?>
Gewijzigd op 31/07/2010 20:10:53 door - SanThe -
 
Mark L

Mark L

31/07/2010 20:35:28
Quote
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if (preg_match('/^[0-9]$/', $char))
?>


Edit:
Het is opzich best goed te leren. Er staat hier op PHPhulp een goede tutorial:
Klikje();
Gewijzigd op 31/07/2010 20:37:16 door Mark L
 
- SanThe -

- SanThe -

31/07/2010 20:40:39
Quote
Mark L op 31/07/2010 20:35:28:
Edit:
Het is opzich best goed te leren. Er staat hier op PHPhulp een goede tutorial:
Klikje();


Ja, ik weet dat ik mij er ooit in moet verdiepen.
Maar ik heb daar momenteel geen tijd voor.
Dat script moet snel werken.

Toevoeging op 01/08/2010 13:44:14:

Wat doet dit?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$use_function
= 'tep_get_country_name';
if (ereg('->', $use_function))
// en
$use_function = 'tep_cfg_get_zone_name';
if (ereg('->', $use_function))
?>


En hoe zet ik dit om naar preg_match()?
 
Karl Karl

Karl Karl

01/08/2010 14:01:25
Quote
SanThe Nvt op 31/07/2010 20:40:39 Toevoeging op 01/08/2010 13:44:14::
Wat doet dit?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$use_function
= 'tep_get_country_name';
if (ereg('->', $use_function))
// en
$use_function = 'tep_cfg_get_zone_name';
if (ereg('->', $use_function))
?>


En hoe zet ik dit om naar preg_match()?


Dat lijkt mij niet correct, als dat zo is. Want volgens mij doet dat niet veel meer dan controleren of -> voorkomt in $use_function.
Deze zou je in principe gewoon om kunnen zetten in de regex /->/ voor preg_match.
Gewijzigd op 01/08/2010 14:02:10 door Karl Karl
 
- SanThe -

- SanThe -

01/08/2010 14:49:01
Quote
@Karl: Bedankt.

Ik heb er nog een gevonden.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
ereg_replace('-language', '-' . $language, $cache)
?>

Hoe is dit met preg_replace()?
Of moet ik hier een str_replace() van maken?
 
- SanThe -

- SanThe -

03/08/2010 16:09:18
Quote
Ik heb inmiddels van dit
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
ereg_replace('-language', '-' . $language, $cache)
?>

Dit gemaakt
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
ereg_replace('/-language/', '-' . $language, $cache)
?>

En dat blijkt ook te werken.

Maar nu heb ik naar mijn idee een vreemde
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
 if (ereg('^' . $cached_file, $cache_file))
?>

Is hier ook op een eenvoudige manier een preg_match() van te maken?
 
- SanThe -

- SanThe -

06/08/2010 21:53:51
Quote
Weet iemand wat hier staat en hoe ik dat in een preg_match kan krijgen?

^(.*)CAdminID=[a-f,0-9]+[&]*(.*)


Zie ook nog mijn vorige post aub.
 
Martijn B

Martijn B

08/08/2010 14:15:52
Quote
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if( preg_match('/^' . preg_quote($cached_file, '/') . '/', $cache_file) )
?>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
preg_match('/^(.*)CAdminID=[a-f0-9]+&*(.*)/', $string, $match);
?>


Alles voor en na "CAdminID=[a-f0-9]+&*" komt resp. in $match[1] en $match[2]
Gewijzigd op 08/08/2010 14:16:35 door Martijn B
 



Overzicht Reageren