Webstatt.org - Community seit 2006 - 2012 (2024?)

zahlen von buchstaben trennen

user-186
12.06.2006 04:20

hallo

ich möchte mit php zahlen von buchstaben trennen. z.b. eine adress-eingabe:
musterstrasse 23

das ich am schluss nur noch die strassen-nummer habe.

ich hab im manual str_replace gefunden, weiss aber nicht, wie ich das auf mein problem anwenden soll....
ist das die richtige funktion für sowas?
oder sonst jemand ein tipp?

user-186
12.06.2006 04:53

hab's gefunden.
für die, die's ebenfalls interessiert:

$strasse_neu = $strasse;
$street = eregi_replace('[0-9]', "", $strasse_neu);
$nr = eregi_replace('[a-z]', "", $strasse_neu);

Avatar user-317
14.06.2006 19:15

Pfui, RegEx Kanone auf sowas und dann auch noch eregi....

<?php
$strasse = 'Musterstrasse 23';
$n_strasse = explode (' ', $strasse);
trim ($n_strasse['1']);

echo 'Straße: ' . $n_strasse['1'];
echo 'Nummer: ' . $n_strasse['2'];
?>

user-220
14.06.2006 20:05

Tja, deins is zwar in sofern richtig aber was ist, wenn der erste String eine zahl enthält? Sprich kein leerzeichen existiert? frech zwinkern

Avatar user-317
14.06.2006 20:56

Original von user-220
aber was ist, wenn der erste String eine zahl enthält? Sprich kein leerzeichen existiert? frech zwinkern


Ehm, ich versteh den zusammenhang erlich gesagt nicht ganz Oo

user-343
14.06.2006 21:06

@ user-317, nicht ganz das ware:

Drei Lindenstrasse 15

Oder sowas zwinkern

Auf dem Hof 123, Eintausend Pagageiengasse 46? *g*


EEEEEDIT:

Wenn du mit explode trennst ist das erste Element im array 0 und nicht 1.

Avatar user-317
14.06.2006 21:49

Mh okay, hab nur das Beispiel von 1. Post aufgegriffen ohne weiter zu überlegen.
Auch das mit explode stimmt, bei RegEx-Funktionen wärs richtig gewesen frech

user-303
14.06.2006 22:08

mir war grad langweilig Fettes Grinsen

<pre><?php

function extract_number($in) {
$str = explode(' ', $in); //erstmal zerlegen
//jedes element durchgehen
$ret = array('',0);
$isnr=false;
for($i=0;$i<count($str);$i++) {
if(is_numeric(substr($str[$i],0,1)) || $isnr) { //wenn nummer, oder aber schon vorher eine nummer gefunden wurde...
$isnr=true;
if($ret[1]!=0) $ret[1] .= $str[$i]; //weitere teile der nummer gefunden
else $ret[1] = $str[$i]; //erste nummer gefunden
} else {
$ret[0] .= $str[$i].' '; //name gefunden
}
}
$ret[0]=trim($ret[0]); //evt. leerzeichen entfernen
return $ret;
}
print_r(extract_number('Musterstraße 1'zwinkern);
print_r(extract_number('Musterstraße max 1'zwinkern);
print_r(extract_number('Musterstraße max 11'zwinkern);
print_r(extract_number('Musterstraße max 11b'zwinkern);
print_r(extract_number('Musterstraße max 1 1'zwinkern);
print_r(extract_number('Musterstraße max 1 1 b'zwinkern);
?></pre>
Array
(
[0] => Musterstraße
[1] => 1
)
Array
(
[0] => Musterstraße max
[1] => 1
)
Array
(
[0] => Musterstraße max
[1] => 11
)
Array
(
[0] => Musterstraße max
[1] => 11b
)
Array
(
[0] => Musterstraße max
[1] => 11
)
Array
(
[0] => Musterstraße max
[1] => 11b
)