PHP ReplacePattern Anker

Gesperrt
derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

PHP ReplacePattern Anker

Beitrag von derSteffen »

Hallo Comunity,

ich weiß jetzt gar nicht ob es überhaupt in das Forum reingehört, aber ich wollte mein Glück mal versuchen.

Ich möchte gerne einen bestimmten Akner verschwinden lassen:

Das ist die funktion dazu, die einen Artikel splitted und den Anker nehr oder weniger verschwinden läßt. Das klappt allerdings nicht gut. Ich würde es viel lieber so sagen, dass wenn <a name="wegdamit"></a> vorkommt soll diese "Zeichenkette" verschwinden.

ich habe nur gar keine Ahnung wie ich das anstellen soll. Ich würde auch behaupten die explode und implode brauche ich doch gar nicht, wenn ich weiß wie mein Anker heißt, oder.

Code: Alles auswählen

function splitArticle () {
      // if tag, build replace pattern and replace delimiter
      // including attributes with clear delimiter
      if ( $this->bolDelimiterIsTag && strlen($this->bolDelimiterIsTag) > 0 ) {
         $strReplacePattern = '';
         $arrTagParts = explode(" ", $this->bolDelimiterIsTag);
         if (is_array($arrTagParts)) {
            $arrTagParts = array_filter($arrTagParts);
            $strReplacePattern = '/<' . implode("[^>]*", $arrTagParts) . '[^>]*>/i';
	    // $strReplacePattern = '/<' . implode("[^>]*", $arrTagParts) . '[>]*>[<\/(a-zA-Z)*>]*/i';
            $this->strArticle = preg_replace($strReplacePattern, $this->strDelimiter, $this->strArticle);
         }
      }
      
      $this->arrSplittedArticle = explode( $this->strDelimiter, $this->strArticle );

Code: Alles auswählen

$strReplacePattern = '/<' . implode("[^>]*", $arrTagParts) . '[^>]*>/i';

Code: Alles auswählen

$strReplacePattern = '/<' . implode("[^>]*", $arrTagParts) . '[^>]*>[<\/(a-zA-Z)*>]*/i';
Der erste Code läßt den Anker verschwinden und das HTML-Tag vor dem Anker (z.B. ein h2 wenn sich der Anker in einer Überschrift befindet) und lässt ein </a> am ende übrig.
Der zweite Code läßt den Anker verschwinden und auch das </a> aber wenn der Anker sich dummerweise wieder in einer Überschrift <h2> befindet löscht er auch die ersten Zeichen der Überschrift und natürlich auch wieder das h2 .

Könnte mir jemand dabei helfen? Ich wäre wirklich sehr dankabr. Ich sitze jetzt schon seit 6h davor und teste vor mich hin.



Vielen Dank

MfG Steffen
xmurrix
Beiträge: 3217
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 19 Mal
Kontaktdaten:

Re: PHP ReplacePattern Anker

Beitrag von xmurrix »

Kannst es mit dem Simple HTML DOM Parser probieren, damit sollte das viel einfacher einfacher zu lösen sein.

Hier ein Beispiel:

Code: Alles auswählen

require_once('simple_html_dom.php');

$html = str_get_html($this->strArticle);

foreach ($html->find('a.wegdamit') as $node) {
    $node->outertext = '';
}

$this->strArticle = (string) $html;
Ist allerdings nicht getestet, so ungefähr sollte es funktionieren...

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
Gesperrt