Raketenwilli: Ziffern fischen per RegEx

Beitrag lesen

Nichtsdestotrotz habe mich für /(?<=Projekt )[0-9 ]+/ und str_replace() entschieden, weil ich so prüfen kann, dass vorne "Projekt " steht und im Falle von z.B. "Projekt 367 566 (04.04.2023)" nur "367566" extrahiert wird.

Klar. Übrigens zeigt das mein Vorschlag mit der kleinen Änderung nach Deiner genaueren Spezifierung „bocksturzfrei“ genau dieses Ergebnis.

<?php
header( 'Content-Type:text/plain' );
$strings = [
    'Projekt 367 566 (04.04.2023)',
    'Foo bar Projekt 12 3Kram',
	'Foo bar Projekt 123Kram',
	'Foo bar Projekt 1 23Kram',
    'Foo bar Projekt12 3 Kram',
	'Foo bar Projekt123 Kram',
	'Foo bar Projekt1 23 Kram'
];
$strings[] = implode( PHP_EOL, $strings );

$pattern = '/Projekt *[0-9 ]+/i';

$i = 0;
foreach( $strings as $string ) {
	$k = 0;
    preg_match_all( $pattern, $string, $arr ) . PHP_EOL;
    $i++;
    echo PHP_EOL . $i . ". String:\t\"" . $strings[$i-1] . '"' . PHP_EOL;
    foreach ( $arr as $a ) {
		foreach ( $a as $s ) {
			$k++;
			#echo "\t" . $k . ". Fund:\t" . str_replace( ' ', '', $s ) . PHP_EOL;
			echo "\t" . $k . ". Fund:\t" . preg_replace( '/[^0-9]/', '', $s ) . PHP_EOL;
		}
	}
}