Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hallo,

ich beisse mir gerade an einem preg_replace Problem die Zähne aus. Evtl. hat jemand eine Idee. Ich habe einen String. Im String befinden sich Hochstriche. Und: Der String ist mit Ziffern durchsetzt.

$s = "a1b2c'd3e4f'gh'i5jk6'lm;

Hier sollen nur innerhalb der Hochstriche Ziffern eliminiert werden, ausserhalb sollen sie stehenbleiben. Tja, und ich dachte, ich kenne mich mit regulären Ausdrücken ein bisschen aus. Ich habe momentan nicht mal einen Ansatzpunkt, wie ich preg_replace dazu bekomme. Weiss irgendwer weiter? :confused:

Würde mich über einen Kommentar freuen.

Sabine

Wenn Du das ganze auch so aufschreibst, dass man verstehst was Du willst, kann man auch helfen. Du hast einen String und was soll nun genau damit geschehen und wie soll das Ergebnis aussehen. Außerdem solltest Du auch die Sprache nennen mit der Du arbeitest

Moin,

wenn es nicht zwingend ein regulärer Ausdruck sein muss, wollte das hier funktionieren:


function fkt_preg_match($s)
{
$r = "";
$an = 0;
for ($i = 0;$i<strlen($s); $i++)
{
$c = substr($s,$i,1);
if ($c == "'")
{
$an = ($an==0?1:0);
$r.=$c;
}
else
{
if ($an == 0 || ($an == 1 && ( $c < "0" || $c > "9")) )
{
$r.=$c;
}
}
}
return $r;
}
[/PHP]

hth

Reinhold

Also mit nem Regülären Ausdruck würds auch gehen, nur hast du dann das Problem das du nicht so genau definieren kannst was zwischen den Hochstrichen heißt.

Aber die Regex müsste in etwa so aussehen (Achtung ungetestet :-))


<?php

$s = "a1b2c'd3e4f'gh'i5jk6'lm";


$regex = "/(?<='[a-zA-Z])\d{1}(?=[a-zA-Z])/is";

print preg_replace($regex,"",$s);

print "<pre>";

var_dump($array);

print "</pre>";

?>

Das macht schonmal aus:

a1b2c'd3e4f'gh'i5jk6'lm

das hier

a1b2c'de4f'gh'ijk6'lm

Nen bisschen selber machen kannste schon ;-)

Also preg_match in ne schleife laufen lassen oder so in der Art.

Hab auch gerade nicht viel Lust da zu basteln ;-)

Reinhold, danke sehr, eine 1a Punktlandung, das ist perfekt....:uli

Moin,

wenn es nicht zwingend ein regulärer Ausdruck sein muss, wollte das hier funktionieren:


function fkt_preg_match($s)
{
$r = "";
$an = 0;
for ($i = 0;$i<strlen($s); $i++)
{
$c = substr($s,$i,1);
if ($c == "'")
{
$an = ($an==0?1:0);
$r.=$c;
}
else
{
if ($an == 0 || ($an == 1 && ( $c < "0" || $c > "9")) )
{
$r.=$c;
}
}
}
return $r;
}
[/PHP]

hth

Reinhold

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.