Einzelnen Beitrag anzeigen
Alt 22.03.2011, 14:40   #3 (permalink)
sofl
Overclocker
 
Benutzerbild von sofl
 

Registriert seit: 20.10.2005
Beiträge: 380

sofl wird schon bald berühmt werden

Standard AW: [PHP] Reguläre Ausdrücke - Replace nur außerhalb von Acronym-Tags

Zitat:
Zitat von Mother-Brain Beitrag anzeigen
vllt. ne einfache if Abfrage, ob das current_beschreibung zu einem "<acronym title=" werden würde?

So gut sind meine PHP Kentnisse leider auch nicht mehr, aber vllt. ist es ja nen Ansatz
Hallo Mother Brain, danke für deine Antwort. Die Idee ist garnicht mal so schlecht. Allerdings müsste ich dann, (korrigiere mich wenn ich mich irre), eine verschachtelte Schleife bauen die bei jedem generieren eines Tags erneut schauen muss die Beschreibung, Begriffe aus der Liste enthält. Das würde unter Umständen ziemlich lange dauern da die Liste ziemlich groß ist und stetig wächst.

Ich habe mir derzeitig eine Notlösung gebaut. Ist zwar nicht die feine englische Art aber funktioniert. (Falls es wen interessieren sollte)

PHP-Code:
function fillWithAcronyms($all,$begriff,$besch,$pos=0){
    
$pos_begriff stripos($all$begriff,$pos);
    
    if(
$pos_begriff===false)
        return 
$all;
    else
    {
        
$pos_acstart strripos(substr($all,0,$pos_begriff), '<acronym title="');
        
$pos_acend strripos(substr($all,0,$pos_begriff), '</acronym>');
    }
    
    if(
$pos_acstart===false && $pos_acend===false)
    {
        
$all=substr_replace($all'<acronym title="'.$besch.'">'.$begriff.'</acronym>'$pos_begriffstrlen($begriff));
        
$all=fillWithAcronyms($all,$begriff,$besch,$pos_begriff);
    }
    elseif(
$pos_acstart!==false && $pos_acend!==false)
    {
        if(
$pos_acstart $pos_acend)
        {
            
$all=substr_replace($all'<acronym title="'.$besch.'">'.$begriff.'</acronym>'$pos_begriffstrlen($begriff));
            
$all=fillWithAcronyms($all,$begriff,$besch,$pos_begriff);
        }
        else
            
$all=fillWithAcronyms($all,$begriff,$besch,$pos_begriff+strlen($begriff));
    }
        
    return 
$all;

Würde mich allerdings trotzdem über eine Lösung mit regulären Ausdrücken freuen.

mfg sofl
sofl ist offline   Mit Zitat antworten
2 Benutzer bedanken sich für den Beitrag:
Mother-Brain (22.03.2011), Profi Overclocker (22.03.2011)