Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Ein Regex für Pekka! [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Ein Regex für Pekka!


 
pekka
21-10-2009, 22:24 
 
Hat jemand Lust, mir einen Regex zu bauen? Wäre mir eine große Hilfe:

Gib aus einem String alle Strings zwischen zwei Gradzeichen (° bzw. \%7D) zurück, bei denen der Abstand zwischen den Gradzeichen kleiner ist als 20 Zeichen.

Also


.. Lorem Ipsum Dolor Sit Amet, °display° Convivium sit amet


=> Match "display"


° .. Lorem Ipsum Dolor Sit Amet, Convivium sit amet°


=> Kein Match

 
wahsaga
21-10-2009, 22:31 
 
#°([^°]{1,20})°#

 
pekka
21-10-2009, 22:33 
 
Vielen Dank!

 
Kropff
21-10-2009, 22:39 
 
Das gehört ja eigentlich in die Projekthilfe :D. Aber auf die Schnelle:
$string_1 = '.. Lorem Ipsum Dolor Sit Amet, °display° Convivium sit amet ';
$string_2 = '° .. Lorem Ipsum Dolor Sit Amet, Convivium sit amet° ';
preg_match ('/°(\S.*?)°/',$string_1, $hits);
print_r($hits);
preg_match ('/°(\S.*?)°/',$string_2, $hits);
print_r($hits);
Peter

 
pekka
21-10-2009, 22:49 
 
Das gehört ja eigentlich in die Projekthilfe :D.

Das stimmt, beachte ich beim nächsten Mal.
Ebenfalls vielen Dank!

 
fireweasel
22-10-2009, 20:42 
 
Mist! Zu spät.
Ich hätte den hier vorgeschlagen:

'/°.{0,19}?°/s'

in preg_match_all() verpackt:


$haystacks = array (
'.. Lorem Ipsum Dolor Sit Amet, °display° Convivium sit amet',
'° .. Lorem Ipsum Dolor Sit Amet, Convivium sit amet°',
// Mindestabstand (0)
'°°',
// Maximalabstand (19)
"all those who remember the war they won't °forget what they've° seen",
// preg_split() waere eine Alternative, falls nicht
'°abcd°war-das-so-gewollt?°efgh°',
);

foreach ($haystacks as $haystack) {
$hits = preg_match_all(
'/(?<=°).{0,19}?(?=°)/s', $haystack, $hits, PREG_PATTERN_ORDER
) ? $hits[0] : NULL;
var_dump($hits);
}

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 08:30 Uhr.